#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
****************************************************************/