#include using namespace std; int dp[12][12][12][12],f[12][12]; char a[12][12]; int main(int argc, char** argv) { int T; cin >> T; while(T--) { int n; cin >> n; memset(a,0,sizeof a); memset(dp,0,sizeof dp); memset(f,0,sizeof f); for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) cin >> a[i][j]; if(a[1][1]=='.') dp[1][1][1][1]=1; for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { for(int k=1;k<=n;k++) { for(int l=1;l<=n;l++) { if(dp[i][j][k][l]) { int ni,nj,nk,nl; ni=i+1,nj=j,nk=k+1,nl=l; if(ni!=nk||nj!=nl) if(a[ni][nj]=='.') if(a[nk][nl]=='.') dp[ni][nj][nk][nl]=1; ni=i,nj=j+1,nk=k+1,nl=l; if(ni!=nk||nj!=nl) if(a[ni][nj]=='.') if(a[nk][nl]=='.') dp[ni][nj][nk][nl]=1; ni=i+1,nj=j,nk=k,nl=l+1; if(ni!=nk||nj!=nl) if(a[ni][nj]=='.') if(a[nk][nl]=='.') dp[ni][nj][nk][nl]=1; ni=i,nj=j+1,nk=k,nl=l+1; if(ni!=nk||nj!=nl) if(a[ni][nj]=='.') if(a[nk][nl]=='.') dp[ni][nj][nk][nl]=1; } } } } } if(a[n][n]=='#') { cout << 0 << "\n"; continue; } if(dp[n][n-1][n-1][n]||dp[n-1][n][n][n-1]) { cout << 2 << "\n"; continue; } if(a[1][1]=='.') { f[1][1]=1; for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { if(f[i][j]) { if(a[i+1][j]=='.') f[i+1][j]=1; if(a[i][j+1]=='.') f[i][j+1]=1; } } } } if(f[n][n]) { cout << 1 << "\n"; }else cout << 0 << "\n"; } return 0; }