RT TLE 80pts
#include<bits/stdc++.h>
#define int long long
#define maxn 210
using namespace std;
int n,A,B;
int a[maxn];
int ans=INT_MAX;
bool vis[maxn];
void dfs(int x,int step){
if(x==B){
ans=min(ans,step);
return ;
}
vis[x]=true;
if(x+a[x]<=n && x+a[x]!=x && !vis[x+a[x]]) dfs(x+a[x],step+1);
if(x-a[x]>=1 && x-a[x]!=x && !vis[x-a[x]]) dfs(x-a[x],step+1);
vis[x]=false;
}
signed main(){
scanf("%lld %lld %lld",&n,&A,&B);
for(int i=1;i<=n;i++) scanf("%lld",&a[i]);
vis[A]=true;
dfs(A,0);
if(ans==INT_MAX){
printf("-1\n");
return 0;
}
printf("%lld\n",ans);
return 0;
}