#include<bits/stdc++.h>
using namespace std;
int n,B,A,a[210],vis[210];
struct node{
int an,st;
};
queue<node> q;
void bfs(int x,int st)
{
vis[x]=1;
q.push((node){x,st});
while(!q.empty())
{
node u=q.front();
if(u.an==B)
{
cout<<u.st;
exit(0);
}
if(u.an+a[u.an]<=n&&vis[u.an+a[u.an]]==0)
{
q.push((node){u.an+a[u.an],u.st+1});
vis[u.an+a[u.an]]=1;
}
if(u.an-a[u.an]>=1&&vis[u.an+a[u.an]]==0)
{
q.push((node){u.an-a[u.an],u.st+1});
vis[u.an-a[u.an]]=1;
}
q.pop();
}
}
int main()
{
cin>>n>>A>>B;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
bfs(A,0);
cout<<-1;
return 0;
}