정수 A를 B로 바꾸려고 한다. 가능한 연산은 다음과 같은 두 가지이다.
2를 곱한다.
1을 수의 가장 오른쪽에 추가한다.
A를 B로 바꾸는데 필요한 연산의 최솟값을 구해보자.
첫째 줄에 A, B (1 ≤ A < B ≤ 10^9)가 주어진다.
A를 B로 바꾸는데 필요한 연산의 최솟값에 1을 더한 값을 출력한다. 만들 수 없는 경우에는 -1을 출력한다.
거꾸로 생각해보도록 하였다. 예시인 2,162를 기준으로 생각하면 2 → 4 → 8 → 81 → 162 = 5가 되는데 이것을 반대로 한번 해보자.
162가 2로 나누어 진다면, 2로 나누고 그 값을 b에 저장하고 res += 1을 수행한다.
81을 2로 나눈 경우 나머지는 1이고 10으로 나눠도 1이다. 그래서 몫인 8을 B에 저장하고 res += 1을 수행한다.
반복....
A와 B 값을 비교하여 같으면 반복문을 탈출하고 결과값을 찍는다.
A , B = map(int,input().split())
res = 1
while True :
if A == B :
break
elif ( B%2 != 0 and B % 10 != 1 ) or (B < A):
res = -1
break
else:
if B % 10 == 1:
res += 1
B = B //10
else:
res += 1
B = B//2
print(res)