#include<bits/stdc++.h>
using namespace std;
struct node{
int cs,num;
};
bool vis [210];
int a[210];
int f[2]={1,-1};
int n,st,ed;
queue<node> q;
int bfs(){
if(st==ed){
return 0;
}
vis[st] = 1;
node e;
e.cs=st;e.num=0;q.push(e);
while(!q.empty()){
node e=q.front();q.pop();
int d=e.cs;
for(int i=0;i<=1;i++){
int dx=d+a[d]*f[i];
if(dx>n||dx>1) continue;
if(vis[dx]==1) continue;
if(dx==ed) return e.num+1;
vis [dx]=1;
node u;u.cs =dx;u.num=e.num+1 ;q.push(u);
}
}
return -1;
}
int main(){
cin>>n>>st>>ed;
for(int i=1;i<=n;i++){
cin>>a[i];
}
cout<<bfs();
return 0;
}