#include <bits/stdc++.h>
using namespace std;
int n, a, b;
int k[210];
bool vis[210];
long long ans = 1e9;
long long sum = 0;
bool stfd = false;
void dfs(int x){
if(x == b){
stfd = true;
ans = min(sum, ans);
return;
}
for(int i = 1; i <= 2; i++){
switch(i){
case 1:
if(x + k[x] > n) break;
else{
if(!vis[x + k[x]]){
sum++;
vis[x + k[x]] = 1;
dfs(x + k[x]);
sum--;
vis[x + k[x]] = 0;
}
break;
}
case 2:
if(x - k[x] < 1) break;
else{
if(!vis[x - k[x]]){
sum++;
vis[x - k[x]] = 1;
dfs(x - k[x]);
sum--;
vis[x - k[x]] = 1;
}
break;
}
}
}
if(x == a && !stfd){
printf("-1");
exit(0);
}
else return;
}
int main(){
cin >> n >> a >> b;
for(int i = 1; i <= n; i++){
cin >> k[i];
}
dfs(a);
printf("%d", ans);
return 0;
}