#include<iostream>
#include<queue>
using namespace std;
struct elevator
{
int floor,cnt;
};
queue <elevator> q;
elevator now;
int n,a,b,k[505],visited[505]={},i,coefficient=-1,TargetFloor;
int main()
{
cin>>n>>a>>b;
for(i=1;i<=n;i++)
{
cin>>k[i];
}
q.push((elevator){a,0});
visited[a]=1;
while(q.empty()==false)
{
now=q.front();
q.pop();
if(now.floor==b)
{
break;
}
TargetFloor=now.floor+k[now.floor];
if(TargetFloor>1&&TargetFloor<=n&&visited[TargetFloor]==0)
{
q.push((elevator){TargetFloor,now.cnt+1});
visited[TargetFloor]=1;
}
TargetFloor=now.floor+k[now.floor]*coefficient;
if(TargetFloor>1&&TargetFloor<=n&&visited[TargetFloor]==0)
{
q.push((elevator){TargetFloor,now.cnt+1});
visited[TargetFloor]=1;
}
}
if(now.floor==b)
{
cout<<now.cnt<<endl;
}
else
{
cout<<-1<<endl;
}
return 0;
}