bfs
#include<bits/stdc++.h>
using namespace std;
queue< pair<int,int> > q;
bool vis[5005];
int main(){
int n,a,b;
int now,step;
cin>>n>>a>>b;
q.push(make_pair(a,0));
vis[a]=1;
while(!q.empty()){
now=q.front().first;
step=q.front().second;
q.pop();
if(now==b){
cout<<step<<endl;
break;
}
if(now+1<=n&&!vis[now+1]){
q.push(make_pair(now+1,step+1));
vis[now+1]=true;
}
if(now-1>=0&&!vis[now-1]){
q.push(make_pair(now-1,step+1));
vis[now-1]=true;
}
if(now*2<=n&&!vis[now*2]){
q.push(make_pair(now*2,step+1));
vis[now*2]=1;
}
}
return 0;
}