#include<bits/stdc++.h> using namespace std; int n,m; struct Node{ int x,step; }; queue<Node> q; int a[100005]; int main(){ cin>>n>>m; q.push({n,0}); while(q.size()>0){ a[n]=1; int x=q.front().x; int step=q.front().step; if(x+1==m){ cout<<step+1; return 0; } else { if(a[x+1]==0){ a[x+1]=1; q.push({x+1,step+1}); } } if(x-1==m){ cout<<step+1; return 0; } else { if(a[x-1]==0){ a[x-1]=1; q.push({x-1,step+1}); } } if(x*2==m){ cout<<step+1; return 0; } else { if(a[x*2]==0){ a[x*2]=1; q.push({x*2,step+1}); } } q.pop(); } return 0; } /************************************************************** Problem: 2111 User: chenjingqi Language: C++ Result: Runtime Error ****************************************************************/