#include <cstdio>
using namespace std;
int n,a,b,nn[205],ans;
int mm=0x7fffffff;
bool mp[205];
int min(int a,int b){return a>b?b:a;}
void dfs(int nc,int cs){//nc当前层数,cs当前按得次数
    
    if(nc==b){mm=min(cs,mm);return;}
    else if(cs<=mm){
        mp[nc]=true;
        if(nc+nn[nc]<=n&&!mp[nc+nn[nc]])dfs(nc+nn[nc],cs+1);
        if(nc-nn[nc]>=1&&!mp[nc-nn[nc]])dfs(nc-nn[nc],cs+1);
        mp[nc]=false;
    }
    return;
}
int main(){
    scanf("%d%d%d",&n,&a,&b);
    //printf("%d%d%d",n,a,b);
    for(int i=1;i<=n;i++)scanf("%d",&nn[i]);
    //for(int i=1;i<=n;i++)printf("%d ",nn[i]);
    dfs(a,0);
    if(mm!=0x7fffffff)
    printf("%d",mm);
    else 
    printf("-1");
    return 0;
}