#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int INF=0x3f3f3f3f;
const int N =2e2+10;
int n,a,b;
int k[N];
int f[N];
int vis[N];
void dfs(int x){
if(vis[x])return;
vis[x]=1;
if(x==b) {return;}
if(x+k[x]<=n) {
dfs(x + k[x]);
f[x]=min(f[x],f[x+k[x]]+1);
}
if(x-k[x]>=1) {
dfs(x - k[x]);
f[x]=min(f[x],f[x-k[x]]+1);
}
}
void solve() {
cin>>n>>a>>b;
for(int i=1;i<=n;i++) { cin >> k[i]; f[i]=INF;}
f[b]=0;
dfs(a);
f[a]==INF?cout<<-1:cout<<f[a];
}
int main() {
ios::sync_with_stdio(0);
ios_base::sync_with_stdio(0);
cin.tie(nullptr);
cout.tie(nullptr);
int t=1;
while(t-->=1){
solve();
}
return 0;}