#include<iostream>
#include<algorithm>
#include<queue>
#include<string>
#include<string.h>
#include<map>
using namespace std;
map<int,int >aa;
bool vis[600000];
int bfs(int a,int b)
{
queue<int>h;
while(!h.empty())
{
h.pop();
}
h.push(a);
vis[a]=1;
while(!h.empty())
{
int y=h.front();
h.pop();
if(y==b)
return aa[y];
if(!vis[y*2]&&y*2<=2*max(a,b))
{
h.push(y*2);
aa[y*2]=aa[y]+1;
vis[y*2]=1;
}
if(!vis[y+1]&&y+1<=2*max(a,b))
{
h.push(y+1);
aa[y+1]=aa[y]+1;
vis[y+1]=1;
}
if(!vis[y-1]&&y-1>=0&&y-1<=2*max(a,b))
{
h.push(y-1);
aa[y-1]=aa[y]+1;
vis[y-1]=1;
}
}
return 0;
}
int main()
{
memset(vis,0,sizeof vis);
int a,b;
cin>>a>>b;
int n=bfs(a,b);
cout<<n<<endl;
}