#include<iostream>
using namespace std;
int n, a, b, p[200], s = 1000000, vis[100];
void dfs(int k,int niu){
if(k == b){
s = min(s, niu);
}
if(niu > s){
return;
}
vis[k] = 1;
if(k + p[k] <= n && vis[k + p[k]] == 0)
dfs(k + p[k], niu + 1);
if(k - p[k] >= 1 && vis[k - p[k]] == 0)
dfs(k - p[k], niu + 1);
vis[k] = 0;
}
int main(){
cin>>n>>a>>b;
for(int i = 1; i <= n; i++){
cin>>p[i];
}
vis[a] = 1;
dfs(a, 0);
if(s != 1000000){
cout<<s;
}
else{
cout<<-1;
}
return 0;
}