usingnamespace std;int a, b;
queue <int> q;int vis[100003], cnt[100003];voidinit(){memset(vis,0,sizeof(vis));memset(cnt,0,sizeof(cnt));}intbfs(){int cur, next;
cnt[a]=0;
vis[a]=1;
q.push(a);
cur = a;while(!q.empty()){
cur = q.front();
q.pop();int i;for(i =0; i <3; i++){if(i ==0){
next = cur -1;}elseif(i ==1){
next = cur +1;}else{
next = cur *2;}if(next <0|| next >=100003)continue;if(!vis[next]){
q.push(next);
cnt[next]= cnt[cur]+1;
vis[next]=1;}if(next == b)return cnt[next];}}return-1;}intmain(){scanf_s("%d%d",&a,&b);init();if(a >= b)printf("%d\n",a-b);elseprintf("%d\n",bfs());return0;}