#include<bits/stdc++.h>
using namespace std;
long long n,a,b,ans;
int p[201];
int flag;
int d[201];
bool find_up(int x)
{
if(x+p[x]<=n&&d[x+p[x]]==0)
return 1;
return 0;
}
bool find_back(int x)
{
if(x-p[x]>=1&&d[x-p[x]]==0)
return 1;
return 0;
}
void dfs(int x,int i)
{
d[x]=1;
if(flag<=i)
return;
if(x==b)
{
flag=min(i,flag);
return;
}
if(find_up(x))
{
dfs(x+p[x],i+1);
}
if(find_back(x))
{
dfs(x-p[x],i+1);
}
return;
}
int main()
{
flag=114514;
cin>>n>>a>>b;
for(int i=1;i<=n;i++)
cin>>p[i];
dfs(a,0);
if(flag==114514)
cout<<-1;
else
cout<<flag;
return 0;
}