#include <bits/stdc++.h>
using namespace std;

int q[210][3],head=1,tail=1;
int a[210];
bool f[210];
int n,x,y,i; 
int main(){
	cin>>n>>x>>y;
	for(i = 1;i <= n;i++){
		cin>>a[i];
	}
	//如果不需要移动楼层 
	if(x == y){
		cout<<0;
		return 0;
	}
	
	q[1][1] = x;
	q[1][2] = 0;//次数
	f[x] = true;//该层到过了
	
	while(head <= tail){
		int flag = 1;
		for(int i = 1;i <= 2;i++){
			int to = q[head][1] + a[q[head][1]] * flag;
			//是正常的楼层,且没走过 
			if(to >= 1 && to <= n && f[to] == false){
				tail++;
				q[tail][1] = to;
				q[tail][2] = q[head][2] + 1;
				f[to] = true;
				
				if(to == y){
					cout<<q[tail][2];
					return 0;
				}
			}
			
			flag = flag * -1;
		}
		head++;
	} 
	cout<<-1;
}


/**************************************************************
	Problem: 1819
	User: admin
	Language: C++
	Result: Accepted
	Time:21 ms
	Memory:2076 kb
****************************************************************/