/*
自己做的第一个广搜。。
一次AC
*/
#include"stdio.h" #include"string.h" #include"queue" using namespace std; int n,k,map[100001]; struct node { int x,step; }; int bfs() { queue<node>q; node cur,next; cur.x=n; cur.step=0; memset(map,0,sizeof(map)); map[n]=1; q.push(cur); while(!q.empty()) { cur=q.front(); q.pop(); if(cur.x==k) return cur.step; next.x=cur.x+1; if(next.x<=100000&&map[next.x]==0) { map[next.x]=1; next.step=cur.step+1; q.push(next); } next.x=cur.x-1; if(next.x>=0&&map[next.x]==0) { map[next.x]=1; next.step=cur.step+1; q.push(next); } next.x=2*cur.x; if(next.x<=100000&&map[next.x]==0) { map[next.x]=1; next.step=cur.step+1; q.push(next); } } } int main() { int c; while(scanf("%d%d",&n,&k)!=EOF) { if(n==k) c=0; else c=bfs(); printf("%d\n",c); } return 0; }