#include<queue>
#include<stdio.h>
#include<iostream>
using namespace std;
__int64 N,K;
queue<__int64> q;
int mark[200050];
void bfs()
{
__int64 step=0;
while(1)
{
__int64 len=q.size();//这一层有多少个节点
while(len>0)
{
__int64 temp=q.front();
if(temp==K)
{
printf("%I64d/n",step);
return;
}
if(mark[temp+1]&& temp<K)
{
q.push(temp+1);
mark[temp+1]=0;
}
if(temp-1>0 && mark[temp-1])
{
q.push(temp-1);
mark[temp-1]=0;
}
if(2*temp<2*K-N && mark[2*temp])
{
q.push(2*temp);
mark[2*temp]=0;
}
q.pop();
len--;
}
++step;
}
}
int main()
{
__int64 i;
while(scanf("%I64d%I64d",&N,&K)!=EOF)
{
if(N>=K)
printf("%I64d/n",N-K);
else
{
for(i=0;i<200010;i++)
mark[i]=1;
q.push(N);
mark[N]=0;
bfs();
while(!q.empty())
q.pop();
}
}
return 0;
}