// 2692 #include using namespace std; int N; vector S; int check(int y, int x) { int ret = 0; if (S[y][x] != '.') return 0; // yoko auto T = S[y]; T[x] = 'A'; if (T == string(N, 'A')) ret++; // tate bool tate = true; for (int i = 0; i < N; i++) { if (i == y) continue; if (S[i][x] != 'A') { tate = false; break; } } if (tate) ret++; // \naname if (x == y) { bool naname1 = true; for (int i = 0; i < N; i++) { if (i == x) continue; if (S[i][i] != 'A') { naname1 = false; break; } } if (naname1) ret++; } // /naname if (x == N - 1 - y) { bool naname2 = true; for (int i = 0; i < N; i++) { if (i == x) continue; if (S[N-1-i][i] != 'A') { naname2 = false; break; } } if (naname2) ret++; } return ret; } int main() { cin.tie(0)->sync_with_stdio(0); cin >> N; S.resize(N); for (auto&& s : S) cin >> s; int ans = 0; for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { ans += check(i, j); } } cout << ans << endl; return 0; }