#include <bits/stdc++.h>
using namespace std;
int n,a,b,ans=INT_MAX;
int vis[210], s[210];
void dfs(int now,int step){
if(now==b){
ans=min(ans,step);
return;
}else if(step<=ans){
if(now+s[now]<=n && vis[now+s[now]]==0){
vis[now+s[now]]=1;
dfs(now+s[now], step+1);
vis[now+s[now]]=0;
}
if(now-s[now]>=1 && vis[now-s[now]]==0){
vis[now-s[now]]=1;
dfs(now-s[now], step+1);
vis[now-s[now]]=0;
}
}
}
int main(){
cin>>n>>a>>b;
for(int i=1;i<=n;i++){
cin>>s[i];
}
vis[a]=1;
dfs(a,0);
cout<<(ans==INT_MAX ? -1 : ans);
return 0;
}