#include<bits/stdc++.h>
using namespace std;
const long long N = 1005;
struct node{ long long x, step; }q[N * N], pre[N * N];
long long v[N];
long long f, r;
long long n, down, out;
int main(){
cin >> n >> down >> out;
for(int i = 1; i <= n; i ++) cin >> v[i];
if(down == out){
cout << 0 << endl;
return 0;
}
q[r ++] = node{down, 0};
while( f <= r){
node tmp = q[f ++];
for(int i = 1; i <= 2; i ++){
if(i == 1){
long long t1 = tmp.x + v[tmp.x];
if(t1 >= 1 && t1 <= n){
if(t1 == out){
cout << tmp.step + 1 << endl;
return 0;
} else q[r ++] = node{t1, tmp.step + 1};
}
}
if(i == 2){
long long t2 = tmp.x - v[tmp.x];
if(t2 >= 1 && t2 <= n){
if(t2 == out){
cout << tmp.step + 1 << endl;
return 0;
} else q[r ++] = node{t2, tmp.step + 1};
}
}
}
}
cout << -1 << endl;
return 0;
}