(1회차 시도 성공!)
import java.io.*;
import java.util.*;
public class Main {
static int[] dx = {1, 2};
static boolean[] visited;
static int ans = Integer.MAX_VALUE;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st.nextToken());
int k = Integer.parseInt(st.nextToken());
visited = new boolean[1000001];
bfs(a, k);
bw.write(ans+"");
br.close();
bw.close();
}
private static void bfs(int start, int target) {
Queue<int[]> q = new LinkedList<>();
q.add(new int[]{start, 0});
visited[start] = true;
while(!q.isEmpty()) {
int[] now = q.poll();
if(now[0] == target){
ans = Math.min(ans, now[1]);
}
for (int i = 0; i < 2; i++) {
if(i == 0){
int nx = now[0] + dx[i];
if(nx <= target && !visited[nx]){
visited[nx] = true;
q.add(new int[]{nx, now[1] + 1});
}
}else{
int nx = now[0] * dx[i];
if(nx <= target && !visited[nx]){
visited[nx] = true;
q.add(new int[]{nx, now[1] + 1});
}
}
}
}
}
}