#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.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<=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: Compile Error
****************************************************************/