#include<bits/stdc++.h>
using namespace std;
struct Node{
int x,step;
};
int n,m,a[100001];
queue<Node> q;
int main(){
cin>>n>>m;
q.push({n,0});
while(q.size()>0){
int x=q.front().x;
int step=q.front().step;
if(x==m){
cout<<step;
return 0;
}
if(x<=m&&a[x+1]==0){
a[x+1]=1;
q.push({x+1,step+1});
}
if(x>=1&&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});
}
q.pop();
}
return 0;
}
/**************************************************************
Problem: 2111
User: linyifan
Language: C++
Result: Accepted
Time:53 ms
Memory:2468 kb
****************************************************************/