#include<iostream>
#include<cstring>
#include<queue>
using namespace std;
int d[100000];
const int MAX = 100000;
int n, m;
int main() {
cin >> n >> m;
queue<int>q;
queue<int>next_q;
memset(d, -1, sizeof(d));
d[n] = 0;
q.push(n);
while (!q.empty()) {
int x = q.front();
q.pop();
if (2 * x < MAX && d[2 * x] == -1) {
q.push(2 * x);
d[2 * x] = d[x];
}
if (x - 1 >= 0 && d[x - 1] == -1) {
d[x - 1] = d[x] + 1;
next_q.push(x - 1);
}
if (x + 1 < MAX && d[x + 1] == -1) {
d[x + 1] = d[x] + 1;
next_q.push(x + 1);
}
if (q.empty()) {
q = next_q;
next_q = queue<int>();
}
}
if (d[m] != -1) {
cout << d[m];
}
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPGNzdHJpbmc+CiNpbmNsdWRlPHF1ZXVlPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwppbnQgZFsxMDAwMDBdOwpjb25zdCBpbnQgTUFYID0gMTAwMDAwOwppbnQgbiwgbTsKaW50IG1haW4oKSB7CgljaW4gPj4gbiA+PiBtOwoJcXVldWU8aW50PnE7CglxdWV1ZTxpbnQ+bmV4dF9xOwoJbWVtc2V0KGQsIC0xLCBzaXplb2YoZCkpOwoJZFtuXSA9IDA7CglxLnB1c2gobik7CgoJd2hpbGUgKCFxLmVtcHR5KCkpIHsKCQlpbnQgeCA9IHEuZnJvbnQoKTsKCQlxLnBvcCgpOwoJCWlmICgyICogeCA8IE1BWCAmJiBkWzIgKiB4XSA9PSAtMSkgewoJCQlxLnB1c2goMiAqIHgpOwoJCQlkWzIgKiB4XSA9IGRbeF07CgkJfQoKCQlpZiAoeCAtIDEgPj0gMCAmJiBkW3ggLSAxXSA9PSAtMSkgewoJCQlkW3ggLSAxXSA9IGRbeF0gKyAxOwoJCQluZXh0X3EucHVzaCh4IC0gMSk7CgkJfQoJCWlmICh4ICsgMSA8IE1BWCAmJiBkW3ggKyAxXSA9PSAtMSkgewoJCQlkW3ggKyAxXSA9IGRbeF0gKyAxOwoJCQluZXh0X3EucHVzaCh4ICsgMSk7CgkJfQoJCWlmIChxLmVtcHR5KCkpIHsKCQkJcSA9IG5leHRfcTsKCQkJbmV4dF9xID0gcXVldWU8aW50PigpOwoJCX0KCX0KCWlmIChkW21dICE9IC0xKSB7CgkJY291dCA8PCBkW21dOwoJfQoJcmV0dXJuIDA7Cn0=