#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)
{
//cout<<v.first<<v.second;
v.first = v.first+first;
v.second = v.second+second;
// cout<<v.first<<v.second<<first<<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);
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,-1,-2);
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+PTEmJnYuZmlyc3QrZmlyc3Q8PTgpCgl7CgkJaWYodi5zZWNvbmQrc2Vjb25kPj0xJiZ2LnNlY29uZCtzZWNvbmQ8PTgpCgkJewoJCQkvL2NvdXQ8PHYuZmlyc3Q8PHYuc2Vjb25kOwoJCQl2LmZpcnN0ID0gdi5maXJzdCtmaXJzdDsKCQkJdi5zZWNvbmQgPSB2LnNlY29uZCtzZWNvbmQ7CgkJLy8JY291dDw8di5maXJzdDw8di5zZWNvbmQ8PGZpcnN0PDxzZWNvbmQ8PCIgIjsKCQkJcmV0dXJuIHY7CgkJfQoJfQoJdi5maXJzdD0oLTEpOwoJdi5zZWNvbmQ9KC0xKTsKCXJldHVybiB2Owp9CgppbnQgbWFpbigpIHsKCWlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW87CgljaW4udGllKDApOwoJbG9uZyBsb25nIGludCB0OwoJY2luPj50OwoJd2hpbGUodC0tKQoJewoJCXN0cmluZyBzdHIxLHN0cjI7CgkJY2luPj5zdHIxPj5zdHIyOwoJCXBhaXI8aW50LGludD5wMSxwMjsKCQlwMSA9IG1ha2VfcGFpcigoc3RyMVswXS0nYScrMSksc3RyMVsxXS0nMCcpOwoJCXAyID0gbWFrZV9wYWlyKChzdHIyWzBdLSdhJysxKSxzdHIyWzFdLScwJyk7CgkJcXVldWU8cGFpcjxsb25nIGxvbmcgaW50LGxvbmcgbG9uZyBpbnQ+PnE7CgkJcS5wdXNoKHAxKTsKCQltYXA8cGFpcjxsb25nIGxvbmcgaW50LGxvbmcgbG9uZyBpbnQ+LGxvbmcgbG9uZyBpbnQ+ZGlzdDsKCQltYXA8cGFpcjxsb25nIGxvbmcgaW50LGxvbmcgbG9uZyBpbnQ+LGJvb2w+dmlzaXRlZDsKCQlmb3IoaW50IGk9MTtpPD05O2krKykKCQlmb3IoaW50IGo9MTtqPD05O2orKykKCQl7CgkJCWRpc3RbbWFrZV9wYWlyKGksaildPSgtMSk7CgkJCXZpc2l0ZWRbbWFrZV9wYWlyKGksaildPWZhbHNlOwoJCX0KCQl2aXNpdGVkW3AxXSA9IHRydWU7CgkJZGlzdFtwMV0gPSAwOwoJCXdoaWxlKCFxLmVtcHR5KCkpCgkJewoJCQkvL2NvdXQ8PHEuc2l6ZSgpPDwiICI7CgkJCXBhaXI8aW50LGludD5wID0gcS5mcm9udCgpOwoJCQlxLnBvcCgpOwoJCQkvL2NvdXQ8PHAuZmlyc3Q8PHAuc2Vjb25kPDwiICI7CgkJCXBhaXI8bG9uZyBsb25nIGludCxsb25nIGxvbmcgaW50PiBhbnM7CgkJCWFucyA9IGNoZWNrKHAsMiwxKTsKCQkJaWYoYW5zLmZpcnN0IT0oLTEpJiZhbnMuc2Vjb25kIT0oLTEpJiZ2aXNpdGVkW2Fuc109PWZhbHNlKQoJCQl7CgkJCQkvL2NvdXQ8PDE8PCIgIjsKCQkJCXZpc2l0ZWRbYW5zXT10cnVlOwoJCQkJZGlzdFthbnNdID0gZGlzdFtwXSArIDE7CgkJCQlxLnB1c2goYW5zKTsKCQkJfQoJCQlhbnMgPSBjaGVjayhwLDIsLTEpOwoJCQlpZihhbnMuZmlyc3QhPSgtMSkmJmFucy5zZWNvbmQhPSgtMSkmJnZpc2l0ZWRbYW5zXT09ZmFsc2UpCgkJCXsKCQkJCXZpc2l0ZWRbYW5zXT10cnVlOwoJCQkJZGlzdFthbnNdID0gZGlzdFtwXSArIDE7CgkJCQlxLnB1c2goYW5zKTsKCQkJfQoJCQlhbnMgPSBjaGVjayhwLC0yLDEpOwoJCQlpZihhbnMuZmlyc3QhPSgtMSkmJmFucy5zZWNvbmQhPSgtMSkmJnZpc2l0ZWRbYW5zXT09ZmFsc2UpCgkJCXsKCQkJCXZpc2l0ZWRbYW5zXT10cnVlOwoJCQkJZGlzdFthbnNdID0gZGlzdFtwXSArIDE7CgkJCQlxLnB1c2goYW5zKTsKCQkJfQoJCQlhbnMgPSBjaGVjayhwLC0yLC0xKTsKCQkJaWYoYW5zLmZpcnN0IT0oLTEpJiZhbnMuc2Vjb25kIT0oLTEpJiZ2aXNpdGVkW2Fuc109PWZhbHNlKQoJCQl7CgkJCQl2aXNpdGVkW2Fuc109dHJ1ZTsKCQkJCWRpc3RbYW5zXSA9IGRpc3RbcF0gKyAxOwoJCQkJcS5wdXNoKGFucyk7CgkJCX0KCQkJYW5zID0gY2hlY2socCwxLDIpOwoJCQlpZihhbnMuZmlyc3QhPSgtMSkmJmFucy5zZWNvbmQhPSgtMSkmJnZpc2l0ZWRbYW5zXT09ZmFsc2UpCgkJCXsKCQkJCXZpc2l0ZWRbYW5zXT10cnVlOwoJCQkJZGlzdFthbnNdID0gZGlzdFtwXSArIDE7CgkJCQlxLnB1c2goYW5zKTsKCQkJfQoJCQlhbnMgPSBjaGVjayhwLC0xLDIpOwoJCQlpZihhbnMuZmlyc3QhPSgtMSkmJmFucy5zZWNvbmQhPSgtMSkmJnZpc2l0ZWRbYW5zXT09ZmFsc2UpCgkJCXsKCQkJCXZpc2l0ZWRbYW5zXT10cnVlOwoJCQkJZGlzdFthbnNdID0gZGlzdFtwXSArIDE7CgkJCQlxLnB1c2goYW5zKTsKCQkJfQoJCQlhbnMgPSBjaGVjayhwLDEsLTIpOwoJCQlpZihhbnMuZmlyc3QhPSgtMSkmJmFucy5zZWNvbmQhPSgtMSkmJnZpc2l0ZWRbYW5zXT09ZmFsc2UpCgkJCXsKCQkJCXZpc2l0ZWRbYW5zXT10cnVlOwoJCQkJZGlzdFthbnNdID0gZGlzdFtwXSArIDE7CgkJCQlxLnB1c2goYW5zKTsKCQkJfQoJCQlhbnMgPSBjaGVjayhwLC0xLC0yKTsKCQkJaWYoYW5zLmZpcnN0IT0oLTEpJiZhbnMuc2Vjb25kIT0oLTEpJiZ2aXNpdGVkW2Fuc109PWZhbHNlKQoJCQl7CgkJCQl2aXNpdGVkW2Fuc109dHJ1ZTsKCQkJCWRpc3RbYW5zXSA9IGRpc3RbcF0gKyAxOwoJCQkJcS5wdXNoKGFucyk7CgkJCX0KCQl9CgkJY291dDw8ZGlzdFtwMl08PGVuZGw7Cgl9CgkvLyB5b3VyIGNvZGUgZ29lcyBoZXJlCglyZXR1cm4gMDsKfQ==