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