#include #define FILE(x) \ freopen(x ".in", "r", stdin); \ freopen(x ".out", "w", stdout); using namespace std; const int N = 80; int n; string s[N], t[N]; int ans; bool flag[N][2]; bool pd[4]; int f() { int res = 0; memset(flag, 0, sizeof flag); for (int i = 1; i <= n; i++) { bool ok = 0; for (int j = 2; j < n; j++) { if (s[i][j] == '#') ok = 1; } if (!ok) { if (s[i][1] != '#') flag[i][0] = 1; if (s[i][n] != '#') flag[i][1] = 1; res += (flag[i][0] || flag[i][1]); } } memset(pd, 0, sizeof pd); for (int i = 0; i < 4; i++) { int tot = 0; bool row = 1; for (int j = 1; j < n; j++) { if (s[j + (i & 2 ? 1 : 0)][i & 1 ? 1 : n] == '#') row = 0; } pd[i] = row; if (row) tot++; int p = i & 2 ? 1 : n; if (flag[p][0] || flag[p][1]) { tot++; } for (int j = 1; j < n; j++) { if (flag[j + (i & 2 ? 1 : 0)][i & 1]) tot++; } res = max(res, tot); } res = max(res, pd[0] + pd[1] + (flag[n][0] || flag[n][1])); res = max(res, pd[2] + pd[3] + (flag[1][0] || flag[1][1])); res = max(res, pd[0] + pd[3] + flag[1][0] + flag[n][1]); res = max(res, pd[1] + pd[2] + flag[1][1] + flag[n][0]); return res; } void solve() { cin >> n; for (int i = 1; i <= n; i++) { cin >> s[i]; s[i] = ' ' + s[i]; t[i] = s[i]; } ans = f(); for (int i = 1; i <= n; i ++) { for (int j = 1; j <= n; j ++) { s[i][j] = t[j][i]; } } cout << max(ans, f()); } int main() { //FILE("trombone"); ios ::sync_with_stdio(0); cin.tie(0), cout.tie(0); int T = 1; while (T--) solve(); return 0; }