#include<iostream>
#include<queue>
using namespace std;
struct node{
int step;
int w;
};
int n,a,b;
int num[201];
int step[10001]={0};
int main(){
cin>>n>>a>>b;
for(int i=1;i<=n;i++)cin>>num[i];
queue<node> flr;
node fi={0,a};
flr.push(fi);
node temp;
step[a]=1;
while(flr.size()){
temp=flr.front();
flr.pop();
if(temp.w==b) break;
step[temp.w]=1;
if(step[temp.w-num[temp.w]]!=1 && temp.w-num[temp.w]>0)temp={temp.step+1,temp.w-num[temp.w]},flr.push(temp);
if(step[temp.w+num[temp.w]]!=1 && temp.w+num[temp.w]<=n)temp={temp.step+1,temp.w+num[temp.w]},flr.push(temp);
}
if(temp.w==b)cout<<temp.step;
else cout<<"-1";
system("pause");
return 0;
}