https://vjudge.net/contest/278989#problem/B
#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>
using namespace std;
int con,x,y,f,b[200000];
queue<int>a;
int main()
{
scanf("%d%d",&x,&y);
a.push(-2);
if(x==y)
{
printf("0\n");
return 0;
}
a.push(x);
b[x]=1;
int i=1;
while(f!=1)
{
if(a.front()==-2)
{
a.pop();
con++;
a.push(-2);
}
if((a.front()-1)==y||(a.front()+1)==y||(a.front()*2)==y)
{
f=1;
break;
}
if(b[a.front()-1]==0&&a.front()>1&&a.front()<100001)
{
a.push(a.front()-1);
b[a.front()-1]=1;
}
if(b[a.front()+1]==0&&a.front()>-1&&a.front()<99999)
{
a.push(a.front()+1);
b[a.front()+1]=1;
}
if(b[a.front()*2]==0&&a.front()>0&&a.front()<50001)
{
a.push(a.front()*2);
b[a.front()*2]=1;
}
a.pop();
}
printf("%d\n",con);
return 0;
}