#include<bits/stdc++.h>
using namespace std;
struct dt{
int a;
int c;
};
queue<dt> q;
int vis[205]={0};
int main(){
dt sz[205]={};
int n,be,en;
cin>>n>>be>>en;
for(int i=1;i<n;i++){
cin>>sz[i].c;
sz[i].a=i;
}
int ans=0;
bool flag=0;
q.push(sz[be]);
if(be==en){
cout<<0;
return 0;
}
while(q.empty()!=true){
if(q.front().a+q.front().c<=n&&vis[q.front().a+q.front().c]!=1){
q.push(sz[q.front().a+q.front().c]);
vis[q.front().a+q.front().c]=1;
if(q.front().a+q.front().c==en){
flag=1;
break;
}
}
if(q.front().a-q.front().c>=1&&vis[q.front().a-q.front().c]!=1){
q.push(sz[q.front().a-q.front().c]);
vis[q.front().a-q.front().c]=1;
if(q.front().a-q.front().c==en){
flag=1;
break;
}
}
q.pop();
ans++;
}
if(flag==1)cout<<ans;
else cout<<-1;
return 0;
}