from collections import deque
test_cases = int(input())
def solve():
a, b = input().split(" ")
a = int(a)
b = int(b)
if a == b:
return "0"
if b > a:
a, b = b, a
if (a % 2 != 0 and b % 2 != 0) or a % b != 0:
return "-1"
def bfs():
queue = deque()
queue.append(a)
visited = set()
moves = 0
while len(queue) > 0:
size = len(queue)
for _ in range(size):
value = queue.popleft()
if value == b:
return moves
if value % 8 == 0:
r = value // 8
if r not in visited:
visited.add(r)
queue.append(r)
if value % 4 == 0:
r = value // 4
if r not in visited:
visited.add(r)
queue.append(r)
if value % 2 == 0:
r = value // 2
if r not in visited:
visited.add(r)
queue.append(r)
moves += 1
return -1
return bfs()
for _ in range(test_cases):
print(solve())
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long int t;
cin>>t;
while(t--)
{
long long int n,x;
cin>>n>>x;
long long int a=0,b=0;
while(n%2==0)
{
n=n/2;
a++;
}
while(x%2==0)
{
x=x/2;
b++;
}
if(n==x)
{
cout<<(abs(a-b)+2)/3<<endl;
}
else
{
cout<<"-1"<<endl;
}
}
return 0;
}
322. Coin Change | 307. Range Sum Query - Mutable |
287. Find the Duplicate Number | 279. Perfect Squares |
275. H-Index II | 274. H-Index |
260. Single Number III | 240. Search a 2D Matrix II |
238. Product of Array Except Self | 229. Majority Element II |
222. Count Complete Tree Nodes | 215. Kth Largest Element in an Array |
198. House Robber | 153. Find Minimum in Rotated Sorted Array |
150. Evaluate Reverse Polish Notation | 144. Binary Tree Preorder Traversal |
137. Single Number II | 130. Surrounded Regions |
129. Sum Root to Leaf Numbers | 120. Triangle |
102. Binary Tree Level Order Traversal | 96. Unique Binary Search Trees |
75. Sort Colors | 74. Search a 2D Matrix |
71. Simplify Path | 62. Unique Paths |
50. Pow(x, n) | 43. Multiply Strings |
34. Find First and Last Position of Element in Sorted Array | 33. Search in Rotated Sorted Array |