#include<stdio.h> #include<string.h> #include<algorithm> #include<queue> using namespace std; int a[100001],vis[100001]; queue<int>q; int bfs(int n,int k) { int head,next,i; q.push(n); a[n]=0; vis[n]=1; while(q.size()!=0) { head=q.front(); q.pop(); for(i=0;i<3;i++) { if(i==0)next=head-1; else if(i==1)next=head+1; else if(i==2)next=head*2; if(next>=0&&next<=100001) { if(vis[next]==0) { q.push(next); a[next]=a[head]+1; vis[next]=1; } if(next==k) return a[next]; } } } } int main() { int i,j,n,k; while(scanf("%d%d",&n,&k)!=EOF) { memset(a,0,sizeof(a)); memset(vis,0,sizeof(vis)); while(!q.empty())q.pop(); if(n>=k) printf("%d\n",n-k); else { printf("%d\n",bfs(n,k)); } } return 0; }