#include <iostream>
#include <queue>
#include <cstring>
using namespace std;
#define N 100001
struct Node{
int loc;
int value;
Node(int loc=0,int value=0):
loc(loc),value(value){}
};
int a,b,n;
bool vis[N]={false};
void BFS();
int main(){
cin>>n;
for(int i=0;i<n;i++){
cin>>a>>b;
memset(vis,0,sizeof(bool)*N);
BFS();
}
return 0;
}
void BFS(){
queue<Node> q;
Node head,tmp,tmp2;//={.loc=a,.value=0}
head.loc=a;head.value=0;
q.push(head);
while(!q.empty()){
tmp=q.front();
q.pop();
if(tmp.loc==b){
cout<<tmp.value<<endl;
return ;
}
//+1
vis[tmp.loc]=true;
if(!vis[tmp.loc+1]&&tmp.loc+1<N){
tmp2.loc=tmp.loc+1;
tmp2.value=tmp.value+1;
q.push(tmp2);
}
//-1
if(!vis[tmp.loc-1]&&tmp.loc-1>0){
tmp2.loc=tmp.loc-1;
tmp2.value=tmp.value+1;
q.push(tmp2);
}
//*2
if(!vis[tmp.loc*2]&&tmp.loc*2<N){
tmp2.loc=tmp.loc*2;
tmp2.value=tmp.value+1;
q.push(tmp2);
}
}
}
全RE我裂开了