#include using namespace std; int t,n,flag1,flag2,vis[15][15]; char mp[15][15]; int xx[]={0,1},yy[]={1,0}; void dfs(int x,int y){ if(mp[x][y]=='#'||flag2==1) return; for(int d=0;d<2;d++){ int dx=x+xx[d],dy=y+yy[d]; if(vis[dx][dy]||dx<1||dy<1||dx>n||dy>n||mp[dx][dy]=='#') continue; if(dx==n&&dy==n){ if(flag1){flag2=1;return;} //找到第二条路径 flag1=1; //找到第一条路径 flag2=2; dfs(1,1); flag1=0; }else{ vis[dx][dy]=1; dfs(dx,dy); vis[dx][dy]=0; } } } signed main(){ ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); cin>>t; while(t--){ cin>>n; memset(vis,0,sizeof(vis)); flag1=0,flag2=0; for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ cin>>mp[i][j]; } } vis[1][1]=1; dfs(1,1); if(flag2==1) cout<<2<