rt,
#include<bits/stdc++.h>
using namespace std;
int n,a,b,k[210],ans=0x3f3f3f3f;
bool vis[210];
void dfs(int x,int y){
if(x==b){
ans=min(ans,y);
return ;
}
if(y>=ans) return ;
vis[x]=1;int i=x;
if(x+k[i]<=n&&!vis[x+k[i]]) dfs(x+k[i],y+1);
if(x-k[i]>0&&!vis[x-k[i]]) dfs(x-k[i],y+1);
vis[x]=0;
return ;
}
signed main(void){
scanf("%d%d%d",&n,&a,&b);
for(int i=1;i<=n;++i){
scanf("%d",k+i);
}vis[a]=1;
dfs(a,0);
printf("%d\n",ans==0x3f3f3f3f?-1:ans);
return 0;
}