int n, a, b;
int c[202] = { 0 };//当前电梯可以移动的
int v[202] = { 0 };
int miin = -1;//记录最小
int len = 0;
void wdy(int now) {
v[now] = 1;
if (now == b) {
if (len < miin || miin < 0) {
miin = len;
}
//回溯
len--;
v[now] = 0;
return;
}
//shang
if (now + c[now] <= n) {
if (v[now + c[now]] == 0) {
len++;
wdy(now + c[now]);
}
}
//xia
if (now - c[now] > 0) {
if (v[now - c[now]] == 0) {
len++;
wdy(now - c[now]);
}
}
//回溯
len--;
v[now] = 0;
}
int main(){
cin >> n >> a >> b;
for (int i = 1; i <= n; i++) {
cin >> c[i];
}
wdy(a);
cout << miin;
return 0;
}