经典搜索题
#include<bits/stdc++.h>
using namespace std;
template <typename T> void read(T &x){
x=0;int f=1;char ch=getchar();
for(;!isdigit(ch);ch=getchar())if(ch=='-')f=-1;
for(;isdigit(ch);ch=getchar())x=(x<<1)+(x<<3)+ch-'0';
x*=f;
}
int N,K;
int ans;
bool v[100001];
int head=0,tail=1;
struct node{
int x,step;
}num[100001];
void moving(int x,int y){
if(y>0&&y<=100001&&!v[y]){
tail++;
num[tail].x=y;
num[tail].step=num[head].step+1;
v[y]=1;
}
}
int bfs(){
num[1].x=N,num[1].step=0;
v[N]=1;
while(head<tail){
head++;
if(num[head].x==K) return num[head].step;
moving(num[head].x,num[head].x-1);
moving(num[head].x,num[head].x+1);
moving(num[head].x,num[head].x+num[head].x);
}
}
int main(){
read(N),read(K);
if(N>=K) cout<<N-K<<endl;
else{
int ans=bfs();
cout<<ans<<endl;
}
return 0;
}