#include <iostream>
#include<bits/stdc++.h>
using namespace std;
pair<long long int,long long int> check(pair<int,int>v,int first,int second)
{
if(v.first+first>=1&&v.first+first<=8)
{
if(v.second+second>=1&&v.second+second<=8)
{
v.first = v.first+first;
v.second = v.second+second;
return v;
}
}
v.first=(-1);
v.second=(-1);
return v;
}
int main() {
ios_base::sync_with_stdio;
cin.tie(0);
long long int t;
cin>>t;
while(t--)
{
string str1,str2;
cin>>str1>>str2;
pair<int,int>p1,p2;
p1 = make_pair((str1[0]-'a'+1),str1[1]-'0');
p2 = make_pair((str2[0]-'a'+1),str2[1]-'0');
queue<pair<long long int,long long int>>q;
q.push(p1);
//vector<pair<pair<long long int,long long int>,bool>>visited(1000);
//vector<pair<pair<long long int,long long int>,long long int>>dist(1000);
map<pair<long long int,long long int>,long long int>dist;
map<pair<long long int,long long int>,bool>visited;
for(int i=1;i<=9;i++)
for(int j=1;j<=9;j++)
{
dist[make_pair(i,j)]=(-1);
visited[make_pair(i,j)]=false;
}
visited[p1] = true;
dist[p1] = 0;
while(!q.empty())
{
//cout<<q.size()<<" ";
pair<int,int>p = q.front();
q.pop();
//cout<<p.first<<p.second<<" ";
pair<long long int,long long int> ans;
ans = check(p,2,1);
if(ans.first!=(-1)&&ans.second!=(-1)&&visited[ans]==false)
{
//cout<<1<<" ";
visited[ans]=true;
dist[ans] = dist[p] + 1;
q.push(ans);
}
ans = check(p,2,-1);
if(ans.first!=(-1)&&ans.second!=(-1)&&visited[ans]==false)
{
visited[ans]=true;
dist[ans] = dist[p] + 1;
q.push(ans);
}
ans = check(p,-2,1);
if(ans.first!=(-1)&&ans.second!=(-1)&&visited[ans]==false)
{
visited[ans]=true;
dist[ans] = dist[p] + 1;
q.push(ans);
}
ans = check(p,-2,-1);
if(ans.first!=(-1)&&ans.second!=(-1)&&visited[ans]==false)
{
visited[ans]=true;
dist[ans] = dist[p] + 1;
q.push(ans);
}
ans = check(p,1,2);
if(ans.first!=(-1)&&ans.second!=(-1)&&visited[ans]==false)
{
visited[ans]=true;
dist[ans] = dist[p] + 1;
q.push(ans);
}
ans = check(p,-1,2);
if(ans.first!=(-1)&&ans.second!=(-1)&&visited[ans]==false)
{
visited[ans]=true;
dist[ans] = dist[p] + 1;
q.push(ans);
}
ans = check(p,1,-2);
if(ans.first!=(-1)&&ans.second!=(-1)&&visited[ans]==false)
{
visited[ans]=true;
dist[ans] = dist[p] + 1;
q.push(ans);
}
ans = check(p,-2,-1);
if(ans.first!=(-1)&&ans.second!=(-1)&&visited[ans]==false)
{
visited[ans]=true;
dist[ans] = dist[p] + 1;
q.push(ans);
}
}
cout<<dist[p2]<<endl;
}
// your code goes here
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwpwYWlyPGxvbmcgbG9uZyBpbnQsbG9uZyBsb25nIGludD4gY2hlY2socGFpcjxpbnQsaW50PnYsaW50IGZpcnN0LGludCBzZWNvbmQpCnsKCWlmKHYuZmlyc3QrZmlyc3Q+PTEmJnYuZmlyc3QrZmlyc3Q8PTgpCgl7CgkJaWYodi5zZWNvbmQrc2Vjb25kPj0xJiZ2LnNlY29uZCtzZWNvbmQ8PTgpCgkJewoJCQl2LmZpcnN0ID0gdi5maXJzdCtmaXJzdDsKCQkJdi5zZWNvbmQgPSB2LnNlY29uZCtzZWNvbmQ7CgkJCXJldHVybiB2OwoJCX0KCX0KCXYuZmlyc3Q9KC0xKTsKCXYuc2Vjb25kPSgtMSk7CglyZXR1cm4gdjsKfQoKaW50IG1haW4oKSB7Cglpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvOwoJY2luLnRpZSgwKTsKCWxvbmcgbG9uZyBpbnQgdDsKCWNpbj4+dDsKCXdoaWxlKHQtLSkKCXsKCQlzdHJpbmcgc3RyMSxzdHIyOwoJCWNpbj4+c3RyMT4+c3RyMjsKCQlwYWlyPGludCxpbnQ+cDEscDI7CgkJcDEgPSBtYWtlX3BhaXIoKHN0cjFbMF0tJ2EnKzEpLHN0cjFbMV0tJzAnKTsKCQlwMiA9IG1ha2VfcGFpcigoc3RyMlswXS0nYScrMSksc3RyMlsxXS0nMCcpOwoJCXF1ZXVlPHBhaXI8bG9uZyBsb25nIGludCxsb25nIGxvbmcgaW50Pj5xOwoJCXEucHVzaChwMSk7CgkJLy92ZWN0b3I8cGFpcjxwYWlyPGxvbmcgbG9uZyBpbnQsbG9uZyBsb25nIGludD4sYm9vbD4+dmlzaXRlZCgxMDAwKTsKCQkvL3ZlY3RvcjxwYWlyPHBhaXI8bG9uZyBsb25nIGludCxsb25nIGxvbmcgaW50Pixsb25nIGxvbmcgaW50Pj5kaXN0KDEwMDApOwoJCW1hcDxwYWlyPGxvbmcgbG9uZyBpbnQsbG9uZyBsb25nIGludD4sbG9uZyBsb25nIGludD5kaXN0OwoJCW1hcDxwYWlyPGxvbmcgbG9uZyBpbnQsbG9uZyBsb25nIGludD4sYm9vbD52aXNpdGVkOwoJCWZvcihpbnQgaT0xO2k8PTk7aSsrKQoJCWZvcihpbnQgaj0xO2o8PTk7aisrKQoJCXsKCQkJZGlzdFttYWtlX3BhaXIoaSxqKV09KC0xKTsKCQkJdmlzaXRlZFttYWtlX3BhaXIoaSxqKV09ZmFsc2U7CgkJfQoJCXZpc2l0ZWRbcDFdID0gdHJ1ZTsKCQlkaXN0W3AxXSA9IDA7CgkJd2hpbGUoIXEuZW1wdHkoKSkKCQl7CgkJCS8vY291dDw8cS5zaXplKCk8PCIgIjsKCQkJcGFpcjxpbnQsaW50PnAgPSBxLmZyb250KCk7CgkJCXEucG9wKCk7CgkJCS8vY291dDw8cC5maXJzdDw8cC5zZWNvbmQ8PCIgIjsKCQkJcGFpcjxsb25nIGxvbmcgaW50LGxvbmcgbG9uZyBpbnQ+IGFuczsKCQkJYW5zID0gY2hlY2socCwyLDEpOwoJCQlpZihhbnMuZmlyc3QhPSgtMSkmJmFucy5zZWNvbmQhPSgtMSkmJnZpc2l0ZWRbYW5zXT09ZmFsc2UpCgkJCXsKCQkJCS8vY291dDw8MTw8IiAiOwoJCQkJdmlzaXRlZFthbnNdPXRydWU7CgkJCQlkaXN0W2Fuc10gPSBkaXN0W3BdICsgMTsKCQkJCXEucHVzaChhbnMpOwoJCQl9CgkJCWFucyA9IGNoZWNrKHAsMiwtMSk7CgkJCWlmKGFucy5maXJzdCE9KC0xKSYmYW5zLnNlY29uZCE9KC0xKSYmdmlzaXRlZFthbnNdPT1mYWxzZSkKCQkJewoJCQkJdmlzaXRlZFthbnNdPXRydWU7CgkJCQlkaXN0W2Fuc10gPSBkaXN0W3BdICsgMTsKCQkJCXEucHVzaChhbnMpOwoJCQl9CgkJCWFucyA9IGNoZWNrKHAsLTIsMSk7CgkJCWlmKGFucy5maXJzdCE9KC0xKSYmYW5zLnNlY29uZCE9KC0xKSYmdmlzaXRlZFthbnNdPT1mYWxzZSkKCQkJewoJCQkJdmlzaXRlZFthbnNdPXRydWU7CgkJCQlkaXN0W2Fuc10gPSBkaXN0W3BdICsgMTsKCQkJCXEucHVzaChhbnMpOwoJCQl9CgkJCWFucyA9IGNoZWNrKHAsLTIsLTEpOwoJCQlpZihhbnMuZmlyc3QhPSgtMSkmJmFucy5zZWNvbmQhPSgtMSkmJnZpc2l0ZWRbYW5zXT09ZmFsc2UpCgkJCXsKCQkJCXZpc2l0ZWRbYW5zXT10cnVlOwoJCQkJZGlzdFthbnNdID0gZGlzdFtwXSArIDE7CgkJCQlxLnB1c2goYW5zKTsKCQkJfQoJCQlhbnMgPSBjaGVjayhwLDEsMik7CgkJCWlmKGFucy5maXJzdCE9KC0xKSYmYW5zLnNlY29uZCE9KC0xKSYmdmlzaXRlZFthbnNdPT1mYWxzZSkKCQkJewoJCQkJdmlzaXRlZFthbnNdPXRydWU7CgkJCQlkaXN0W2Fuc10gPSBkaXN0W3BdICsgMTsKCQkJCXEucHVzaChhbnMpOwoJCQl9CgkJCWFucyA9IGNoZWNrKHAsLTEsMik7CgkJCWlmKGFucy5maXJzdCE9KC0xKSYmYW5zLnNlY29uZCE9KC0xKSYmdmlzaXRlZFthbnNdPT1mYWxzZSkKCQkJewoJCQkJdmlzaXRlZFthbnNdPXRydWU7CgkJCQlkaXN0W2Fuc10gPSBkaXN0W3BdICsgMTsKCQkJCXEucHVzaChhbnMpOwoJCQl9CgkJCWFucyA9IGNoZWNrKHAsMSwtMik7CgkJCWlmKGFucy5maXJzdCE9KC0xKSYmYW5zLnNlY29uZCE9KC0xKSYmdmlzaXRlZFthbnNdPT1mYWxzZSkKCQkJewoJCQkJdmlzaXRlZFthbnNdPXRydWU7CgkJCQlkaXN0W2Fuc10gPSBkaXN0W3BdICsgMTsKCQkJCXEucHVzaChhbnMpOwoJCQl9CgkJCWFucyA9IGNoZWNrKHAsLTIsLTEpOwoJCQlpZihhbnMuZmlyc3QhPSgtMSkmJmFucy5zZWNvbmQhPSgtMSkmJnZpc2l0ZWRbYW5zXT09ZmFsc2UpCgkJCXsKCQkJCXZpc2l0ZWRbYW5zXT10cnVlOwoJCQkJZGlzdFthbnNdID0gZGlzdFtwXSArIDE7CgkJCQlxLnB1c2goYW5zKTsKCQkJfQoJCX0KCQljb3V0PDxkaXN0W3AyXTw8ZW5kbDsKCX0KCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCXJldHVybiAwOwp9