#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ull unsigned long long
#define f(i,j,n) for(int i=j;i<=n;i++)
const ll mx=1e12,mi=-1e12,N=10000000;
queue<pair<int,int> >q;
int dx[]={1,2,2,1,-1,-2,-2,-1},dy[]={2,1,-1,-2,2,1,-1,-2};
int n,a,b;
typedef struct{
int floor;
int cnt;
}elem;
queue<elem> Q;
int main(){
int i;int s[1000],t[1000]={0};
cin>>n>>a>>b;
f(i,1,n)cin>>s[i];
elem e1,e2;
e1.floor=a;e1.floor=1;
Q.push(e1);t[a]=1;
while(!Q.empty())
{
e2=Q.front();
Q.pop();
if(e2.floor==b)break;
i=e2.floor+s[e2.floor];
if(i<=n&&t[i]==0)
{
e1.floor=i;
e1.cnt=e2.cnt+1;
Q.push(e1);
t[i]=1;
}
i=e2.floor-s[e2.floor];
if(i>=1&&t[i]==0)
{
e1.floor=i;
e1.cnt=e2.cnt+1;
Q.push(e1);
t[i]=1;
}
}
if(e2.floor==b)cout<<e2.cnt;
else cout<<-1;
}