#include <iostream>
#include <cstdio>
#pragma GCC optimize(2)
using namespace std;
int n,m,a[100001],A,B,b[100001],pos[100001],s[100001];
typedef long long ll;
int bfs(int x,int y,int h)
{
b[n]=1;
pos[0]=n;
s[0]=0;
while(B)
{
B--;
int n1=pos[B];
int ans=s[B];
if (n1==A)
{
return ans;
}
for(int i=-1; i<=1;i++)
{
int n3;
if (i==0)
{
n3=n1+1;
}
else
{
if(i==-1)
{
n3=n1-1;
}
else
{
n3=n1*2;
}
}
if(n3>=1&&n3<=100000&&b[n3]==0)
{
b[n3]=1;
pos[B]=n3;
s[B]=ans+1;
}
}
}
return -1;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>n>>A>>B;
for(int i=1;i<=n;i++)
{
cin>>pos[i];
}
cout<<bfs(A,B,n)<<endl;
return 0;
}
``