#include<iostream>
using namespace std;
int n,a,b,ans = 0x3f3f3f3f;
int lift[205],visited[205];
void dfs(int floor,int cnt)
{
if(floor == b)
{
ans = min(ans,cnt);
return;
}
if(cnt > ans)
{
return;
}
visited[floor] = 1;
if(floor - lift[floor] >= 1 && visited[floor - lift[floor]] != 1)
{
dfs(floor - lift[floor],cnt + 1);
}
if(floor + lift[floor] <= n && visited[floor + lift[floor] != 1])
{
dfs(floor + lift[floor],cnt + 1);
}
}
int main()
{
cin >> n >> a >> b;
for(int i = 1;i <= n;i++)
{
cin >> lift[i];
}
visited[a] = 1;
dfs(a,0);
if(ans == 0x3f3f3f3f)
{
cout << -1 << endl;
}
else
{
cout << ans << endl;
}
return 0;
}