#include <iostream>
#include <queue>
using namespace std;
int n,a,b;
struct NODE{
int data,num,value=-1;
}x[201];
queue <NODE> q;
signed main(){
cin >> n >> a >> b;
for(int i=1;i<=n;i++){
cin >> x[i].num;
x[i].data=i;
}
x[a].value=0;
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)q.push({tmp.data+tmp.num,x[tmp.data+tmp.num].num,tmp.value+1});
if(tmp.data-tmp.num>=1)q.push({tmp.data-tmp.num,x[tmp.data-tmp.num].num,tmp.value+1});
}
}