#include<bits/stdc++.h>
using namespace std;
int a[123123],ff[123123],f[123123],n,aa,bb,flag=1;
void bfs()
{
int head=0,tail=1;
f[1]=aa;
while(head<tail){
head++;
int up=a[f[head]]+f[head],down=f[head]-a[f[head]];
if (up<=n&&ff[up]==0&&a[f[head]]!=0&&up!=aa){
tail++;
f[tail]=up;
ff[tail]=ff[head]+1;
if(f[tail]==bb){
printf("%d",ff[tail]);flag=0;return;
}
}
if (down>0&&ff[down]==0&&a[f[head]]!=0&&down!=aa){
tail++;
f[tail]=down;
ff[tail]=ff[head]+1;
if(f[tail]==bb){
printf("%d",ff[tail]);flag=0;return;
}
}
}
}
int main()
{
scanf("%d%d%d",&n,&aa,&bb);
if(aa==bb) {
printf("0");
return 0;
}
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
}
bfs();
if(flag)printf("-1");
return 0;
}