// 遍历该层的三个节点,分别为+1, -1, *2
// 加入待选节点前,先进行判断是否合法
#include <bits/stdc++.h>
using namespace std;
int main(void) {
int level = -1, size = 0;
int a, b;
queue<int> q;
// 这个地方为啥用cin输入就不对了?卡了我一个晚上啊!
scanf("%d,%d", &a, &b);
q.push(a);
while(!q.empty()) {
size = q.size();
level++;
// 遍历该层的三个节点,分别为+1, -1, *2
// 加入待选节点前,先进行判断是否合法
for(int i = 0; i < size; i++) {
int t = q.front(); q.pop();
// 满足要求即可退出
if(t == b) {
while(!q.empty()) q.pop();
break;
}
// 三种待选方案
if(t+1 <= 100) q.push(t+1);
if(t-1 >= -100) q.push(t-1);
if(2*t <= 200 && 2*t >= -200) q.push(2*t);
}
}
cout << level << endl;
return 0;
}