#include<iostream>
#include<queue>
using namespace std;
int m,n;
int used[10005];
int step[10005];
queue <int> q;
int change(int now,int i)
{
switch(i)
{
case 0:return now+1;
case 1:return now*2;
case 2:return now*now;
}
return -1;
}
int bfs()
{
int now,next;
while(!q.empty())
{
now=q.front();
q.pop();
for(int i=0;i<3;i++)
{
next=change(now,i);
if(next<=n&&!used[next]) //越界!!!!!!
{
used[next]=1;
step[next]=step[now]+1;
if(next==n)
return step[next];
else
q.push(next);
}
}
}
return -1;
}
int main()
{
cin>>m>>n;
q.push(m);
used[m]=1;
step[m]=0;
cout<<bfs()<<endl;
return 0;
}