- bfs를 통해 모든 경우를 순회하면서 curr == K인 경우에 bfs의 depth 출력
- 걸린 시간은 bfs의 depth임
-> bfs의 depth는 visit list를 이용하여 구할 수 있음
-> visit[next_position] = visit[current_position] + 1 이런식으로
import sys
from collections import deque
def bfs(N, K):
queue = deque([]); queue.append(N)
while queue:
curr = queue.popleft()
if curr == K:
print(visit[curr])
return
if 0 <= curr-1 <= 100000 and visit[curr - 1] == 0:
queue.append(curr - 1); visit[curr-1] = visit[curr] + 1
if 0 <= curr+1 <= 100000 and visit[curr + 1] == 0:
queue.append(curr + 1); visit[curr+1] = visit[curr] + 1
if 0 <= curr*2 <= 100000 and visit[curr * 2] == 0:
queue.append(curr * 2); visit[curr*2] = visit[curr] + 1
N, K = map(int, input().split(' '))
visit = [0] * (100000+1)
bfs(N, K)