#include<bits/stdc++.h>
using namespace std;
//p1135 奇怪的电梯
int n,a,b,ans=99999999; //n:总楼层数 a:起始 b:终点
int to[201]; //按钮楼层数
bool tag[201]; //判断该层是否走过
void dfs(int now,int sum){
//信任递归
//递归思路:每一步具体操作+递归截至条件
if(now==b) //找到终点
ans=min(ans,sum); //最小路径
if(sum>ans) //结束条件
return;
tag[now]=true; //该层走过,防止死循环
if(now+to[now]<=n&&!tag[now+to[now]]) //不超过总楼层,该层没走过
dfs(now+to[now],sum+1); //
if(now-to[now]>=1&&!tag[now-to[now]]) //同上
dfs(now-to[now],sum+1); //
tag[now]=0;
}
int main(){
cin>>n>>a>>b;
for(int i=1;i<=n;i++){
cin>>to[i]; //记录按钮
}
tag[a]=1; //起始楼层标记
dfs(a,0); //深搜
if(ans!=99999999)
cout<<ans;
else
cout<<-1;
return 0;
}