#include #define db double #define reg register #define LL long long #define pb push_back #define lb lower_bound #define ub upper_bound #define ull unsigned long long #define rep(i,a,b) for(int i=a,i##end=b;i<=i##end;++i) #define drep(i,a,b) for(int i=a,i##end=b;i>=i##end;--i) #define erep(i,a) for(int i=head[a];i;i=e[i].nxt) using namespace std; bool Handsome; inline int rd(){ reg int x=0;reg char o=getchar();reg bool O=0; for(;o<48 || 57y && (x=y));} inline void Mx(int &x,int y){if(xn || y>n || !a[x][y])return 0; if(x==n && y==n)return 1; if(dfs(x+1,y))return a[x][y]=0,1; if(dfs(x,y+1))return a[x][y]=0,1; return 0; } void solve(){ n=rd(); rep(i,1,n){ scanf("%s",s+1); rep(j,1,n)a[i][j]=(s[j]=='.'); } if(!dfs(1,1))return puts("0"),void(); a[1][1]=1; if(dfs(1,1))puts("2"); else puts("1"); } bool Most; int main(){ // printf("%.2lfMB\n",(&Most-&Handsome)/1024.0/1024.0); int t=rd(); while(t--)solve(); return 0; }