#include<iostream>
#include<queue>
using namespace std;
int m, n, num;
int used[100001];
queue<int>q;
int init(void);
int bfs(void);
int moveto(int ,int);
int main(void)
{
cin >> m >> n;
init();
num = bfs();
cout << num << endl;
return 0;
}
int bfs(void)
{
int u, v, k;
while(!q.empty())
{
v = q.front();
q.pop();
for(u = 1;u <= 3;++u)
{
k = moveto(v, u);
if(k > n)
{
continue;
}
if(k == n)
{
return used[v] + 1;
}
if(used[k] == -1)
{
used[k] = used[v] + 1;
q.push(k);
}
}
}
}
int init()
{
int i;
for(i = 1;i <= 10000;++i)
{
used[i] = -1;
}
q.push(m);
used[m] = 0;
}
int moveto(int u,int b)
{
if(b == 1)
{
return u * u;
}
else if(b == 2)
{
return u + 1;
}
else
{
return u * 2;
}
return 0;
}