//不能用贪心来想,要用BFS
import java.util.*;
public class 最少次数 {
static class node{
int x,dept;
node(int x,int dept){
this.x=x;
this.dept=dept;
}
}
//标记是否走过
static boolean[] vis=new boolean[10000];
public static void bfs() {
Queue<node> que=new LinkedList<node>();
que.add(new node(2021,0));
while(!que.isEmpty()) {
node t=que.poll();
//出口
if(t.x==1) {
System.out.println(t.dept);
return ;
}
if(t.x%2==0&&vis[t.x/2]==false) {
vis[t.x/2]=true;
que.add(new node(t.x/2,t.dept+1));
}
//如果没走过的话
if(vis[t.x-1]==false) {
vis[t.x-1]=true;
que.add(new node(t.x-1,t.dept+1));
}
if(vis[t.x+1]==false) {
vis[t.x+1]=true;
que.add(new node(t.x+1,t.dept+1));
}
}
}
public static void main(String[] args) {
vis[2021]=true;
bfs();
}
}