#include <bits/stdc++.h>
using namespace std;
queue<int> q;
int dir[210];
int bu[210];
bool f[210];
int main()
{
int n,a,b;
cin>>n>>a>>b;
if(a == b){
}
for(int i = 1;i <= n;i++){
cin>>dir[i];
}
memset(bu, -1, sizeof(a));
memset(f, false, sizeof(f));
bu[a] = 0;
f[a] = true;
q.push(a);
while(!q.empty()){
int x = q.front();
q.pop();
if (x == b) break;
if(dir[x] == 0) continue;
if(x+dir[x]<=n && !f[x+dir[x]]){
f[x+dir[x]] = true;
bu[x+dir[x]] = bu[x]+1;
q.push(x+dir[x]);
}
if(x-dir[x]>=1 && !f[x-dir[x]]){
f[x-dir[x]] = true;
bu[x-dir[x]] = bu[x]+1;
q.push(x-dir[x]);
}
}
if(a == b){
cout<<0<<endl;
return 0;
}
cout<<bu[b]<<endl;
return 0;
}