#include<iostream>
using namespace std;
int n, Begin, End, l[209], vis[209], ans = 0x7ffffff;
void dfs(int a,int sum) {
if (a == End) {
ans = min(ans, sum);
}
if (sum > ans)return;
vis[a] = 1;
if (!vis[a + l[a]] && a + l[a] <= n)dfs(a + l[a], sum + 1);
if (!vis[a + l[a]] && a + l[a] >= 1)dfs(a - l[a],sum+1);
vis[a] = 0;
}
int main() {
cin >> n >> Begin >> End;
for (int i = 1; i <= n; i++) {
cin >> l[i];
}
vis[Begin] = 1;
dfs(Begin,0);
if (ans != 0x7ffffff)cout << ans;
else cout << -1;
return 0;
}