#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;
}