#include<bits/stdc++.h>
using namespace std;
int n,x,y,ans=111111111;
int a[2005];
bool flag[2005];
void DFS(int xz,int yj){
if(xz==y){
ans=min(ans,yj);
}
if(xz>ans){
return;
}else if(yj<=ans){
flag[xz]=true;
if(xz+a[xz]<=n and !flag[xz+a[xz]]){
DFS(xz+a[xz],yj+1);
}
if(xz-a[xz]>=1 and !flag[xz-a[xz]]){
DFS(xz-a[xz],yj+1);
}
flag[xz]=false;
}
}
int main(){
scanf("%d%d%d",&n,&x,&y);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
}
flag[x]=true;
DFS(x,0);
if(ans!=111111111){
printf("%d",ans);
}else{
printf("-1");
}
return 0;
}