#include #include #include #include using namespace std; int n,flag,ex,ey; char map[15][15]; struct node{ int cnt;int s;int x,y; char map[12][12]; }s_pos; bool vis[12][12][12][1<<11]; bool cheack(int x,int y){ return x>=0&&x=0&&y q; q.push(s_pos); vis[s_pos.x][s_pos.y][s_pos.cnt][s_pos.s]=true; while(!q.empty()){ node now = q.front(); q.pop(); if(now.x==ex&&now.y==ey){ flag=1; return ; } for(int i=0;i<4;i++){ node next = now; int x=next.x; int y=next.y; x+=dir[i][0], y+=dir[i][1]; if(cheack(x,y)){ if(map[x][y]=='*') continue; next.x=x; next.y=y; if(next.map[x][y]=='K'){ next.map[x][y]='.'; next.cnt+=1; } if(next.map[x][y]>='a'&&next.map[x][y]<='z'){ if(next.cnt>0){ next.s|=(1<<(next.map[x][y]-'a')); next.cnt-=1; next.map[x][y]='.'; } else continue; } if(!vis[x][y][next.cnt][next.s]){ vis[x][y][next.cnt][next.s]=true; q.push(next); } } } } } int main(){ int t;int ca=1;scanf("%d",&t); while(t--){ scanf("%d",&n); for(int i=0;i