#include <iostream>
using namespace std;
int N,K;
int vis[200005] = {0};
int q[200005];
void bfs()
{
int front,rear;
front = rear = 0;
q[rear++] = N;
vis[N] = 0;
if( N == K) return;
while(front <= rear)
{
int x = q[front++];
if(x == K)
return;
if(x >= 1 && !vis[x-1]){
q[rear++] = x - 1;
vis[x-1] = vis[x] + 1;
}
if(x+1 <= K && !vis[x+1]){
q[rear++] = x + 1;
vis[x+1] = vis[x] + 1;
}
if(x <= K && !vis[2*x]){
q[rear++] = 2*x;
vis[2*x] = vis[x] + 1;
}
}
}
int main()
{
// freopen("in.in","r",stdin);
cin>>N>>K;
bfs();
cout<<vis[K]<<endl;
}