#include<cstdio>
const int N=2e3+10;
int n,b,k[N],flag=-1;
void dfs(int a,int d,int* v){
if(a==b&&(flag==-1||d<flag)){
flag=d;
return;
}
if((a-k[a])>=1&&(a-k[a])<=n&&(!v[a-k[a]])){
v[a-k[a]]=1;
dfs(a-k[a],d+1,v);
v[a-k[a]]=0;
}
if((a+k[a])>=1&&(a+k[a])<=n&&(!v[a+k[a]])){
v[a+k[a]]=1;
dfs(a+k[a],d+1,v);
}
}
int main(){
int a,v[N]={0};
scanf("%d %d %d",&n,&a,&b);
v[a]=1;
for(int i=1;i<=n;++i)scanf("%d",&k[i]);
dfs(a,0,v);
printf("%d",flag);
return 0;
}