#include #define rep(i, a, b) for (int i = a; i <= b; i++) #define per(i, a, b) for (int i = a; i >= b; i--) using namespace std; typedef unsigned long long ull; typedef pair pii; typedef long long ll; template inline void read(T &f) { f = 0; T fu = 1; char c = getchar(); while (c < '0' || c > '9') { if (c == '-') { fu = -1; } c = getchar(); } while (c >= '0' && c <= '9') { f = (f << 3) + (f << 1) + (c & 15); c = getchar(); } f *= fu; } template void print(T x) { if (x < 0) putchar('-'), x = -x; if (x < 10) putchar(x + 48); else print(x / 10), putchar(x % 10 + 48); } template void print(T x, char t) { print(x); putchar(t); } const int N = 15; char c[N][N]; int f[N * 2][N][N], dp[N][N]; int T, n; int main() { read(T); while (T--) { memset(f, 0, sizeof(f)); read(n); for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) c[i][j] = '#'; } for (int i = 1; i <= n; i++) scanf("%s", c[i] + 1); if (c[1][1] == '#' || c[n][n] == '#') { print(0, '\n'); continue; } if (c[1][2] != '#' && c[2][1] != '#') { f[3][1][2] = 1; for (int i = 3; i <= n; i++) { for (int j = 1; j <= i - 1; j++) { for (int k = j + 1; k <= i - 1; k++) { if (f[i][j][k]) { if (c[j][i - j + 1] == '.' && c[k][i - k + 1] == '.') f[i + 1][j][k] = 1; if (j + 1 != k && c[j + 1][i - j] == '.' && c[k][i - k + 1] == '.') f[i + 1][j + 1][k] = 1; if (c[j][i - j + 1] == '.' && c[k + 1][i - k] == '.') f[i + 1][j][k + 1] = 1; if (c[j + 1][i - j] == '.' && c[k + 1][i - k] == '.') f[i + 1][j + 1][k + 1] = 1; } } } } for (int i = n + 1; i <= 2 * n - 2; i++) { for (int j = i - n; j <= n; j++) { for (int k = j + 1; k <= n; k++) { if (f[i][j][k]) { if (c[j][i - j + 1] == '.' && c[k][i - k + 1] == '.') f[i + 1][j][k] = 1; if (j + 1 != k && c[j + 1][i - j] == '.' && c[k][i - k + 1] == '.') f[i + 1][j + 1][k] = 1; if (c[j][i - j + 1] == '.' && c[k + 1][i - k] == '.') f[i + 1][j][k + 1] = 1; if (c[j + 1][i - j] == '.' && c[k + 1][i - k] == '.') f[i + 1][j + 1][k + 1] = 1; } } } } if (f[2 * n - 1][n - 1][n]) { print(2, '\n'); continue; } } dp[1][1] = 1; for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { if (i == 1 && j == 1) continue; dp[i][j] = 0; if (c[i][j] == '#') continue; dp[i][j] = dp[i - 1][j] | dp[i][j - 1]; } } if (dp[n][n]) { print(1, '\n'); continue; } print(0, '\n'); } return 0; }