#include<bits/stdc++.h>
using namespace std;
struct node{
int sum;
int y;
}start;
int vec[2]={-1,1};
bool vis[210];
int n,a,b;
int flag=0;
int nums[210];
int main(){
cin>>n>>a>>b;
start.y=a;
start.sum=0;
vis[a]=true;
for(int i=1;i<=n;i++)cin>>nums[i];
if(a==b){
cout<<"0";
return 0;
}
queue<node> q;
q.push(start);
while(!q.empty()){
node f=q.front();
for(int i=0;i<2;i++){
int next_y=f.y+nums[f.y]*vec[i];
if(next_y==b){
cout<<f.sum+1;
flag=1;
break;
}
if(next_y>0&&next_y<=n&&vis[next_y]==false){
node temp{f.sum+1,next_y};
vis[temp.y]=true;
q.push(temp);
}
}
q.pop();
}
if(flag==0)cout<<"-1";
return 0;
}