#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>
using namespace std;
const int N=11,INF=0x7fffffff;
int vis[N][N][N][N][N][N];
char mat[N][N];
int n;
struct status
{
int ax,ay,bx,by,cx,cy,t;
};
int move[4][2]= {{0,1},{0,-1},{1,0},{-1,0} };
inline bool illegal(int i)
{
if(i<0||i>=n)
return true;
return false;
}
inline bool invalid(int x,int y)
{
if(mat[x][y]=='#')
return true;
return false;
}
int bfs()
{
int ax,ay,bx,by,cx,cy,t;
for(int i=0; i<n; i++)
for(int j=0; j<n; j++)
if(mat[i][j]=='A')
ax=i,ay=j;
else if(mat[i][j]=='B')
bx=i,by=j;
else if(mat[i][j]=='C')
cx=i,cy=j;
status cur= {ax,ay,bx,by,cx,cy,0};
queue<status>que;
while(!que.empty())que.pop();
memset(vis,0,sizeof(vis));
que.push(cur);
vis[ax][ay][bx][by][cx][cy]=0;
while(!que.empty())
{
cur=que.front();
que.pop();
for(int i=0; i<4; i++)
{
ax=cur.ax+move[i][0],ay=cur.ay+move[i][1];
bx=cur.bx+move[i][0],by=cur.by+move[i][1];
cx=cur.cx+move[i][0],cy=cur.cy+move[i][1];
t=cur.t+1;
if(illegal(ax)||illegal(ay)||illegal(bx)||illegal(by)||illegal(cx)||illegal(cy))
continue;
if(vis[ax][ay][bx][by][cx][cy]!=0&&vis[ax][ay][bx][by][cx][cy]<t)
continue;
vis[ax][ay][bx][by][cx][cy]=t;
if(mat[ax][ay]=='X'&&mat[bx][by]=='X'&&mat[cx][cy]=='X')
{
return t;
}
int fa,fb,fc;//0 means move , while 1 means stay
fa=fb=fc=0;
if(invalid(ax,ay))fa++,ax-=move[i][0],by-=move[i][1];
if(invalid(bx,by))fb++,bx-=move[i][0],by-=move[i][1];
if(invalid(cx,cy))fc++,cx-=move[i][0],by-=move[i][1];
if(fa&&fb&&fc)
continue;
if(vis[ax][ay][bx][by][cx][cy]!=0&&vis[ax][ay][bx][by][cx][cy]<t)
continue;
vis[ax][ay][bx][by][cx][cy]=t;
if(ax==bx&&ay==by)
{
if(fa)
bx-=move[i][0],by-=move[i][1],fb=1;
else if(fb)
ax-=move[i][0],ay-=move[i][1],fa=1;
}
if(ax==cx&&ay==cy)
{
if(fa)
cx-=move[i][0],cy-=move[i][1],fc=1;
else if(fc)
ax-=move[i][0],ay-=move[i][1],fa=1;
}
if(bx==cx&&by==cy)
{
if(fb)
cx-=move[i][0],cy-=move[i][1],fc=1;
else if(fc)
bx-=move[i][0],by-=move[i][1],fb=1;
}
if(fa&&fb&&fc)
continue;
vis[ax][ay][bx][by][cx][cy]=t;
status next= {ax,ay,bx,by,cx,cy,t};
que.push(next);
}
}
return -1;
}
int main()
{
freopen("in","r",stdin);
int T,cas=0,ret;
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
for(int i=0; i<n; i++)
scanf("%s",mat[i]);
ret=bfs();
printf("Case %d: ",++cas);
printf(ret>=0?"%d\n":"trapped\n",ret);
}
return 0;
}