#include<stdio.h>
#include<string.h>

const int MAX = 500000 + 5;
const int INF = 0x3f3f3f3f;

int time[MAX];
int queue[MAX];
int bfs(int n,int k) {	
	memset(time,INF,sizeof(time));
	//queue<int> que;
	//que.push(n);
	int front,rear;
	front = rear = 0;
	rear++;
	queue[front] = n;
	time[n] = 0;
	
	while(front < rear) {
		//int t = que.front();que.pop();
		int t = queue[front];
		front++;
		if(t == k) break;
		if(t >= 1 && time[t - 1] == INF) {
			//que.push(t-1);
			queue[rear++] = t - 1;
			time[t-1] = time[t] + 1;
		}
		if(t <= k  &&  time[t * 2] == INF) {
			//que.push(t * 2);
			queue[rear++] = t * 2;
			time[t * 2] = time[t] + 1;
		}
		if(t <= k && time[t + 1] == INF) {
			queue[rear++] = t + 1;
			time[t + 1] = time[t] + 1;
		}
	}
	return time[k];
}
int main() {
	int n,k;
	while(~scanf("%d %d",&n,&k)) {
		int ans = bfs(n,k);
		printf("%d\n",ans);
	}
	return 0;
}
/**************************************************************
	Problem: 2111
	User: admin
	Language: C++
	Result: Accepted
	Time:77 ms
	Memory:5052 kb
****************************************************************/