#include<bits/stdc++.h> using namespace std; int n,m,k=0,d,c,l; int a[9000001]; struct Node{ int x,s; }; queue <Node> q; int main(){ cin>>n>>m; q.push({n,0}); if(n==m){ cout<<0; return 0; } while(q.size()>0){ d=q.front().x; c=q.front().s; if(d==m){ cout<<c; return 0; } if(d<=m&&a[d+1]==0) a[d+1]=1,q.push({d+1,c+1}); if(d>=1&&a[d-1]==0) a[d+1]=1,q.push({d-1,c+1}); if(d<=m&&a[d*2]==0) a[d+1]=1,q.push({d*2,c+1}); q.pop(); } } /************************************************************** Problem: 2111 User: zhengzihao Language: C++ Result: Accepted Time:59 ms Memory:37364 kb ****************************************************************/