#include using namespace std; int n; char s[12][12]; int f[21][11][11], dp[11][11]; bool check2() { f[0][0][0] = s[0][0] == '.'; for (int i = 1; i < (n-1)<<1; ++i) for (int x1 = 0; x1 <= i && x1 < n; ++x1) for (int x2 = 0; x2 <= i && x2 < n; ++x2) { // (x1, i - x1) (x2, i - x2) int y1 = i - x1, y2 = i - x2; f[i][x1][x2] = 0; if (y1 < 0 || y1 >= n || y2 < 0 || y2 >= n || s[x1][y1] != '.' || s[x2][y2] != '.') continue; if (x1 == x2 && y1 == y2) continue; if (x1 >= 1 && x2 >= 1) f[i][x1][x2] |= f[i-1][x1-1][x2-1]; if (y1 >= 1 && y2 >= 1) f[i][x1][x2] |= f[i-1][x1][x2]; if (x1 >= 1 && y2 >= 1) f[i][x1][x2] |= f[i-1][x1-1][x2]; if (y1 >= 1 && x2 >= 1) f[i][x1][x2] |= f[i-1][x1][x2-1]; } return f[((n-1)<<1)-1][n-1][n-2] && s[n-1][n-1] == '.'; } bool check1() { dp[0][0] = s[0][0] == '.'; for (int i = 0; i < n; ++i) for (int j = i ? 0 : 1; j < n; ++j) { dp[i][j] = 0; if (s[i][j] != '.') continue; if (i) dp[i][j] |= dp[i-1][j]; if (j) dp[i][j] |= dp[i][j-1]; } return dp[n-1][n-1]; } int main() { int T; scanf("%d", &T); while (T--) { scanf("%d", &n); for (int i = 0; i < n; ++i) scanf("%s", s[i]); if (check2()) puts("2"); else if (check1()) puts("1"); else puts("0"); } return 0; }