P1135
#include<bits/stdc++.h>
using namespace std;
int n,a,b,m,ans,minn=1145;
vector<int> mapp[100005];
bool vis[100005],f;
void dfs(int x){
if(x==b){
minn=min(minn,ans);
return;
}
for(int i=0;i<mapp[x].size();i++){
if(!vis[mapp[x][i]]){
vis[mapp[x][i]]=1;
ans++;
dfs(mapp[x][i]);
ans--;
}
}
}
int main(){
cin>>n>>a>>b;
for(int i=1;i<=n;i++){
cin>>m;
if(i+m<=n&&m!=0){
mapp[i].push_back(i+m);
}
if(i-m>=1&&m!=0){
mapp[i].push_back(i-m);
}
}
vis[a]=1;
dfs(a);
if(minn==1145){
cout<<-1;
return 0;
}
cout<<minn;
return 0;
}