#include<iostream>
#include<queue>
using namespace std;
queue<int>q;
int t[250];
bool visit[250];
int num[250];
int bfs(int n,int a,int b){
q.push(a);
while(!q.empty()){
int res=q.front();
if (res==b) return t[res];
if (t[res]>n) return -1;
if (res-num[res]>=0&&visit[res-num[res]]==0){
q.push(res-num[res]);
t[res-num[res]]=t[res]+1;
visit[res-num[res]]=1;
}
if (res+num[res]<=n&&visit[res+num[res]]==0){
q.push(res+num[res]);
t[res+num[res]]=t[res]+1;
visit[res+num[res]]=1;
}
q.pop();
}
}
int main(){
int n,a,b;
cin>>n>>a>>b;
for(int i=1;i<=n;i++){
cin>>num[i];
}
cout<<bfs(n,a,b);
}