#include<iostream>
#include<vector>
#include<queue>
using namespace std;
const int maxn=100005;
int a,b,vis[maxn],step[maxn];
void bfs()
{
queue<int> q;
q.push(a);
vis[a]=1;
while(!q.empty())
{
int u=q.front();
q.pop();
if(u==b) return ;
if(u+1<=b&&vis[u+1]==0)
{
q.push(u+1);
vis[u+1]=1;
step[u+1]=step[u]+1;
}
if(u*2<=b&&vis[u*2]==0)
{
q.push(u*2);
vis[u*2]=1;
step[u*2]=step[u]+1;
}
if(u-1<=b&&vis[u-1]==0)
{
q.push(u-1);
vis[u-1]=1;
step[u-1]=step[u]+1;
}
}
}
int main()
{
int k;
cin>>k>>a>>b;
for(int i=0;i<k;i++)
{
bfs();
cout<<step[b]<<endl;
}
return 0;
}