1 | #include<bits/stdc++.h> |
2 | using namespace std; |
3 | const int N=100010; |
4 | int vis[N]; |
5 | int a,b; |
6 | int ans=INT_MAX; |
7 | void dfs(int x,int step) |
8 | { |
9 | // cout<<x<<endl; |
10 | if(step>=ans) |
11 | { |
12 | return; |
13 | } |
14 | if(x>b) |
15 | { |
16 | ans=min(ans,step+x-b); |
17 | return; |
18 | } |
19 | if(x==b) |
20 | { |
21 | ans=max(ans,step); |
22 | return; |
23 | } |
24 | if(vis[x+1]==0&&x+1<=100000) |
25 | { |
26 | vis[x+1]=1; |
27 | dfs(x+1,step+1); |
28 | vis[x+1]=0; |
29 | } |
30 | if(vis[x-1]==0&&x-1>=0) |
31 | { |
32 | vis[x-1]=1; |
33 | dfs(x-1,step+1); |
34 | vis[x-1]=0; |
35 | } |
36 | if(vis[x*2]==0&&x*2<=100000) |
37 | { |
38 | vis[x*2]=1; |
39 | dfs(x*2,step+1); |
40 | vis[x*2]=0; |
41 | } |
42 | } |
43 | int main() |
44 | { |
45 | cin>>a>>b; |
46 | dfs(a,0); |
47 | if(a==b) |
48 | { |
49 | cout<<0; |
50 | return 0; |
51 | } |
52 | cout<<ans; |
53 | return 0; |
54 | } |