#include<bits/stdc++.h> using namespace std; int n,m,a[100011]; struct Node{ int x,step; }; queue<Node> q; int main(){ cin>>n>>m; q.push({n,0}); while(!q.empty()){ int x=q.front().x; int step=q.front().step; if(x==m){ cout<<step; return 0; } if(x>=1&&a[x-1]==0) a[x-1]=1,q.push({x-1,step+1}); if(x<=m&&a[x+1]==0) a[x+1]=1,q.push({x+1,step+1}); if(x<=m&&a[x*2]==0) a[x*2]=1,q.push({x*2,step+1}); // if(x-1==m){ // cout<<step+1; // return 0; // } // else{ // q.push({x-1,step+1}); // } // if(x+1==m){ // cout<<step+1; // return 0; // } // else{ // q.push({x+1,step+1}); // } // if(x*2==m){ // cout<<step+1; // return 0; // } // else{ // q.push({x*2,step+1}); // } q.pop(); } return 0; } /************************************************************** Problem: 2111 User: chenyubo Language: C++ Result: Accepted Time:56 ms Memory:2468 kb ****************************************************************/