#include<bits/stdc++.h>
using namespace std;
int n,from,to;
int ans=2147483647;
int a[1009];
bool vis[1009];
void dfs(int floor,int cnt){
if(floor==to){
ans=min(ans,cnt);
}
if(cnt>ans){
return;
}
vis[floor]=true;
if(!vis[floor+a[floor]]&&floor+a[floor]<=n){
dfs(floor+a[floor],++cnt);
}
if(!vis[floor-a[floor]]&&floor-a[floor]>=1){
dfs(floor-a[floor],++cnt);
}
vis[floor]=false;
}
int main(){
cin>>n>>from>>to;
for(int i=1;i<=n;i++){
cin>>a[i];
}
vis[from]=true;
dfs(from,0);
if(ans!=2147483647){
cout<<ans;
}
else{
cout<<"-1";
}
return 0;
}