#include <iostream>#include <cstdlib>#include <cstring>#include <cstdio>#include <queue>using namespace std;#define maxn 100005struct Item{ int step, pos; Item() { } Item(int s, int p) : step(s), pos(p) { }};int visited[maxn];int main(){ int n, k; scanf("%d%d", &n, &k); if (n == k) { printf("0n"); return 0; } memset(visited, 0, sizeof(visited)); queue<Item> q; q.push(Item(0, n)); while (1) { Item temp; temp = q.front(); q.pop(); if (temp.pos * 2 < maxn && !visited[temp.pos * 2]) { q.push(Item(temp.step + 1, temp.pos * 2)); visited[temp.pos * 2] = true; } if (temp.pos + 1 < maxn && !visited[temp.pos + 1]) { q.push(Item(temp.step + 1, temp.pos + 1)); visited[temp.pos + 1] = true; } if (temp.pos - 1 >= 0 && !visited[temp.pos - 1]) { q.push(Item(temp.step + 1, temp.pos - 1)); visited[temp.pos - 1] = true; } if (visited[k]) { printf("%dn", temp.step + 1); return 0; } } return 0;}