#include "iostream" #include "math.h" #include "queue" using namespace std; long mark[210000]; struct node{ long num; long lev; }; queue <node> seq; node BFS(node s, node e) { node front,temp; memset(mark,0,sizeof(mark)); seq.push(s); while(!seq.empty()) { front=seq.front(); if(front.num==e.num) return front; mark[front.num]=1; seq.pop(); if(!mark[front.num-1]&&front.num-1>=0&&front.num-1<=100000) { temp.num=front.num-1;mark[front.num-1]=1;temp.lev=front.lev+1; seq.push(temp); } if(!mark[front.num+1]&&front.num+1>=0&&front.num+1<=100000) { temp.num=front.num+1;mark[front.num+1]=1;temp.lev=front.lev+1; seq.push(temp); } if(!mark[front.num * 2]&&front.num*2>=0 && front.num*2 <=100000) { temp.num=front.num*2;mark[front.num*2]=1;temp.lev=front.lev+1; seq.push(temp); } } return front; } int main() { long a,b; node start,end,res; while(scanf("%ld %ld",&a,&b)!=EOF) { while(!seq.empty()) seq.pop(); start.num=a;start.lev=0; end.num=b; res=BFS(start,end); printf("%ld/n",res.lev); } return 0; }