//水题 重点是考虑全情况
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;//ll 为小于10的19次方
int main(){
int n;
cin>>n;
while(n--)
{
int j=0,s=0,ii=0,ee=0,jj=0,oo=0;
ll x,y;
cin>>x>>y;
if(x==y)
{
cout<<"0"<<endl;
continue;
}
if(x%2==1)
{
jj++;
}
else
{
oo++;
}
if(y%2==1)
{
jj++;
}
else
{
oo++;
}
if(jj==2)//如果是两个奇数这不用判断 为-1
{
cout<<-1<<endl;
continue;
}
while(x<y)
{
x=x*2;
j++;
ii=1;
}
if(x!=y&&ii==1)//加上 ii==1 这个条件是为了防止x>y时进入此if语句中运行
{
cout<<-1<<endl;
continue;
}
while(x>y)//尽量不要用 x=x/2 因为除了话只会留下整数,写成 y=y*2 的话不会丢失数据
{
y=y*2;
j++;ee=1;
}
if(x!=y&&ee==1)
{
cout<<-1<<endl;
continue;
}
s=s+j/3;//8是2的三次方所以除三
j=j%3;
s=s+j/2;//8是2的二次方
j=j%2;
s=s+j;
cout<<s<<endl;
}
}