#include<bits/stdc++.h>
using namespace std;
int n,m,a[100001];
struct Node{
	int x,step;
};
int fx[3]={-1,1,2};
queue<Node> q;

int main(){
	cin>>n>>m;//5 17
	q.push({n,0});
	a[n]=1;
	while(q.size()>0){
		int x=q.front().x;
		int step=q.front().step;
		for(int i=0;i<=2;i++){
			int tx;
			if(fx[i]==2) tx=x*2;
			else tx=x+fx[i];
			if(tx==m){
				cout<<step+1;
				return 0; 
			}
			else{
				if(a[tx]==0){
					a[tx]=1;
					q.push({tx,step+1});
				}
			}
		}
		q.pop();
	}
	
	
	return 0;
}

/**************************************************************
	Problem: 2111
	User: hulaoshi
	Language: C++
	Result: Runtime Error
****************************************************************/