#include<stdio.h>#include<string.h>#include<math.h>#include<iostream>#include<algorithm>#include<map>#include<queue>using namespace std;#define pb push_back#define mp make_pair#define X first#define Y second#define inf 0xffffffftypedef long long lld;struct Node{int x1,y1,x2,y2,s;Node(){}Node(int x10,int y10,int x20,int y20,int s0):x1(x10),y1(y10),x2(x20),y2(y20),s(s0){}bool operator <(Node a) const{return a.s < s;}};int myabs(int x){return max(x,-x);}priority_queue<Node>Q;char g[110][110];int sx1,sy1,sx2,sy2;int c1,c2;int dis[20][20][20][20];int ax1[4]={0,1,0,-1};int ay1[4]={1,0,-1,0};int ax2[4]={0,1,0,-1};int ay2[4]={-1,0,1,0};int bfs(){while(!Q.empty())Q.pop();Q.push(Node(sx1,sy1,sx2,sy2,0));for(int x1=1;x1<=10;x1++)for(int y1=1;y1<=15;y1++)for(int x2=1;x2<=10;x2++)for(int y2=1;y2<=15;y2++)dis[x1][y1][x2][y2]=inf;dis[sx1][sy1][sx2][sy2]=0;while(!Q.empty()){Node o=Q.top();Q.pop();int x1=o.x1;int y1=o.y1;int x2=o.x2;int y2=o.y2;int s=o.s;if(g[x1][y1] == 'H' && g[x2][y2] == 'H')return s;if(dis[x1][y1][x2][y2] != s)continue;if(g[x1][y1] == 'O' && g[x2][y2] == 'O')continue;if(g[x1][y1] == 'O'){if(myabs(x1-x2)+myabs(y1-y2) == 1){if(s+11 < dis[x2][y2][x2][y2]){dis[x2][y2][x2][y2]=s+11;Q.push(Node(x2,y2,x2,y2,s+11));}}}if(g[x2][y2] == 'O'){if(myabs(x1-x2)+myabs(y1-y2) == 1){if(s+11 < dis[x1][y1][x1][y1]){dis[x1][y1][x1][y1]=s+11;Q.push(Node(x1,y1,x1,y1,s+11));}}}for(int k=0;k<4;k++){int xx1=x1+ax1[k];int yy1=y1+ay1[k];int xx2=x2+ax2[k];int yy2=y2+ay2[k];int add;if(g[x1][y1] == 'O')add=c1;else if(g[x2][y2] == 'O')add=c2;elseadd=5;if(g[x1][y1] == 'O' || g[xx1][yy1] == 'X'){xx1=x1;yy1=y1;}if(g[x2][y2] == 'O' || g[xx2][yy2] == 'X'){xx2=x2;yy2=y2;}if(s+add < dis[xx1][yy1][xx2][yy2]){dis[xx1][yy1][xx2][yy2]=s+add;Q.push(Node(xx1,yy1,xx2,yy2,s+add));}}}return inf;}int main(){int cas;scanf("%d",&cas);for(int cc=1;cc<=cas;cc++){for(int i=0;i<20;i++)for(int j=0;j<20;j++)g[i][j]='X';for(int i=1;i<=10;i++)scanf("%s",&g[i][1]);for(int i=1;i<=10;i++)g[i][16]='X';scanf("%d %d",&sx1,&sy1);scanf("%d %d",&sx2,&sy2);c1=2;c2=3;int ans1=bfs();c1=3;c2=2;int ans2=bfs();int ans=min(ans1,ans2);if(ans == inf)ans=-1;printf("%dn",ans);}return 0;}


