#include #define ll long long #define putc putchar using namespace std; templateinline T maxn(const T x,const T y){return x>y?x:y;} templateinline T minn(const T x,const T y){return xinline T abs(const T x){return x<0?-x:x;} templateinline T read(){ T x=0;bool flag=true;char ch=getchar(); while(!isdigit(ch)){if(ch=='-')flag=false;ch=getchar();} while(isdigit(ch))x=(x<<1)+(x<<3)+(ch^48),ch=getchar(); return flag?x:-x; } templateinline void print(T x){ if(x<0)putc('-'),x=-x; if(x>9)print(x/10); putc(x%10+'0'); } int t,n,cnt,f[12][12],a[12][12]; int dfs(int x,int y){ if(x<1||y<1||x>n||y>n||f[x][y])return 0; if(x==n&&y==n){cnt++;return 1;} int s,flag; s=dfs(x+1,y); a[x][y]+=s,flag=s; s=dfs(x,y+1); a[x][y]+=s,flag+=s; return flag; } signed main(){ t=read(); while(t--){ memset(a,0,sizeof(a)),cnt=0; n=read(); for(int i=1;i<=n;++i) for(int j=1;j<=n;++j){ char c=getchar();while(c!='.'&&c!='#')c=getchar(); f[i][j]=c=='.'?0:1; } if(f[1][1]||f[n][n]){puts("0");continue;} if(dfs(1,1)){ for(int i=1;i<=n;++i) for(int j=1;j<=n;++j){ if((i==1&&j==1)||(i==n&&j==n))continue; if(a[i][j]==cnt){ puts("1"); goto next; } } puts("2"); next:; }else puts("0"); } return 0; }