#include<bits/stdc++.h>
using namespace std;
int n,a,b,k[300],maxn=1e9,bz[300];
void dfs(int x,int s){
if(s>maxn) return;
if(x==b){
if(s<maxn)
maxn=s;
return;
}
if(x+k[x]>=0 && x+k[x]<=n && bz[x+k[x]]==0){
bz[x]=1;
dfs(x+k[x],s+1);
bz[x]=0;
}
if(x-k[x]>=0 && x-k[x]<=n && bz[x+k[x]]==0){
bz[x]=1;
dfs(x-k[x],s+1);
bz[x]=0;
}
}
int main(){
scanf("%d%d%d",&n,&a,&b);
for(int i=1; i<=n; i++)
scanf("%d",&k[i]);
dfs(a,0);
if(maxn!=100)
printf("%d",maxn);
else
printf("-1");
return 0;
}
我用的dfs