#include<iostream>
#include<queue>
using namespace std;
int main()
{
queue<int>a;int A,B,n,i,u;
cin>>n>>A>>B;
int floor[n+1],time[n+1];
bool yon[n+1]={true},v=true;yon[A]=false;
for(i=1;i<=n;i++)
{
cin>>floor[i];
}
a.push(A);time[A]=0;
while(!a.empty())
{
u=a.front();a.pop();
if(u==B)
{
cout<<time[u];
return 0;
}
if(yon[u+floor[u]]&&u+floor[u]<=n&&u-floor[u]>0)
{
a.push(u+floor[u]);
yon[u+floor[u]]=false;
time[u+floor[u]]=time[u]+1;
}
if(yon[u-floor[u]]&&u-floor[u]>0&&u-floor[u]<=n)
{
a.push(u-floor[u]);
yon[u-floor[u]]=false;
time[u-floor[u]]=time[u]+1;
}
}
cout<<-1;
return 0;
}