#include<iostream> #include<algorithm> #include<queue> #define MAX 100001 using namespace std; int N,K; bool map[MAX]; struct node { int x; int steps; }; int bfs() { queue<node> que; node pre; pre.x=N; pre.steps=0; map[pre.x]=1; que.push(pre); while(!que.empty()) { pre=que.front(); que.pop(); if(pre.x==K) { return pre.steps; } node a[3]; a[0].x=pre.x+1; a[1].x=pre.x-1; a[2].x=pre.x*2; a[0].steps=a[1].steps=a[2].steps=pre.steps+1; for(int i=0;i<3;i++) { if(a[i].x>=0&&a[i].x<MAX&&map[a[i].x]==0) { map[a[i].x]=1; que.push(a[i]); } } } } int main() { while(scanf("%d%d",&N,&K)==2) { printf("%d/n",bfs()); memset(map,false,sizeof(map)); } return 0; }