#include<bits/stdc++.h>
using namespace std;
int A,B,n;
int k[201],vis[201],ans=201;
void dfs(int x,int step){
if(vis[x]<=step){
return;
}
vis[x]=step;
if(x==B){
ans=min(ans,step);
return;
}
for(int i=-1;i<=1;i++){
int next_x=x+i*k[x];
if(next_x<1||next_x>n||vis[next_x]){
continue;
}
vis[next_x]=true;
dfs(next_x,step+1);
vis[next_x]=false;
}
}
int main(){
cin>>n>>A>>B;
for(int i=1;i<=n;i++){
cin>>k[i];
}
dfs(A,0);
if(ans!=0x7ffffff){
cout<<ans;
}
else{
cout<<"-1";
}
return 0;
}