#include<bits/stdc++.h>
using namespace std;
#define MAXN 100005
struct step{
int step_cnt;
int place;
step(){};
step(int __step_cnt,int __place){
this->step_cnt=__step_cnt;
this->place=__place;
}
};
int vis[MAXN];
step first_step(int first_x){
step first_step1;
first_step1.step_cnt=0;
first_step1.place=first_x;
return first_step1;
}
int bfs(int step_up,int x,int y){
memset(vis,0,sizeof(vis));
queue<step> step_q;
step step_q_front,step_new;
step_q.push(first_step(x));
while(!step_q.empty()){
step_q_front=step_q.front();
step_q.pop();
if(step_q_front.place==y){
return step_q_front.step_cnt;
}
if(vis[step_q_front.place]==1){
continue;
}
vis[step_q_front.place]=true;
step_new.step_cnt=step_q_front.step_cnt+1;
step_new.place=step_q_front.place+1;
step_q.push(step_new);
step_new.place=step_q_front.place-1;
step_q.push(step_new);
if(step_q_front.place<10000000){
step_new.place=step_q_front.place*2;
step_q.push(step_new);
printf("flag, step_q_front.place=%d\n",step_q_front.place);
}else{
continue;
}
}
return -1;
}
void solve(int x,int y){
printf("%d\n",bfs(abs(x-y),x,y));
return;
}
int main(){
int t,read_x,read_y;
scanf("%d",&t);
for(int i=0;i<t;i++){
scanf("%d %d",&read_x,&read_y);
solve(read_x,read_y);
}
return 0;
}