정수 A를 B로 바꾸려고 한다. 가능한 연산은 다음과 같은 두 가지이다.
A를 B로 바꾸는데 필요한 연산의 최솟값을 구해보자.
첫째 줄에 A, B (1 ≤ A < B ≤ 109)가 주어진다.
A를 B로 바꾸는데 필요한 연산의 최솟값에 1을 더한 값을 출력한다. 만들 수 없는 경우에는 -1을 출력한다.
from collections import deque
a, b = map(int, input().split())
visited = [0]*(b+1)
def bfs():
queue = deque()
queue.append(a)
visited[a] = 1
while queue:
node = queue.pop()
nums = [node*2, int(str(node)+'1')]
for i in nums:
if i <= b:
queue.append(i)
visited[i] = visited[node] + 1
return visited[b]
ans = bfs()
if ans == 0:
print(-1)
else:
print(ans)
from collections import deque
a, b = map(int, input().split())
def bfs():
queue = deque()
queue.append((a, 1))
while queue:
node, cnt = queue.pop()
if node == b:
return cnt
# print(node, cnt)
nums = [node*2, node*10+1]
for i in nums:
if i <= b:
queue.append((i, cnt+1))
return -1
print(bfs())