#include <iostream>
#include <cstdio>
#include <queue>
using namespace std;
int n,a,b;
struct NODE{
int data,num,value=-1;
bool flag=0;
}x[205];
queue <NODE> q;
signed main(){
freopen("P1135_1.in","r",stdin);
cin >> n >> a >> b;
for(int i=1;i<=n;i++){
cin >> x[i].num;
x[i].data=i;
}
x[a].value=0,x[a].flag=1;
q.push(x[a]);
while (!q.empty()){
NODE tmp=q.front();
if(tmp.data==b){
cout << tmp.value;
return 0;
}
q.pop();
if(tmp.data+tmp.num<=n&&!x[tmp.data+tmp.num].flag){
q.push({tmp.data+tmp.num,x[tmp.data+tmp.num].num,tmp.value+1,0});
x[tmp.data+tmp.num].flag=1;
}
if(tmp.data-tmp.num>=1&&!x[tmp.data+tmp.num].flag){
q.push({tmp.data-tmp.num,x[tmp.data-tmp.num].num,tmp.value+1,0});
x[tmp.data-tmp.num].flag=1;
}
}
cout << -1;
}