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