#include<stdio.h> #include<algorithm> using namespace std; int n; char c[5][5]; char s[5][5]; void change(int x) { for(int i = 0; i < n; i++) for(int j = 0; j < n; j++){ if(c[i][j] == '.'){ if(x&1) s[i][j] = 'p'; else{ s[i][j] = '.'; } } else{ s[i][j] = 'X'; } x >>= 1; } } bool isTrue() { for(int i = 0; i < n ;i++) { int now = 0; for(int j = 0; j < n; j++){ if(s[i][j] == 'p') now++; else if(s[i][j] == 'X'){ now = 0; } if(now > 1) return false; } } for(int i = 0; i < n ;i++) { int now = 0; for(int j = 0; j < n; j++){ if(s[j][i] == 'p') now++; else if(s[j][i] == 'X'){ now = 0; } if(now > 1) return false; } } return true; } int ans() { int num = 0; for(int i = 0; i < n; i++) for(int j = 0; j < n; j++) if(s[i][j] == 'p') num++; return num; } int main() { scanf("%d\n", &n); char t; for(int i = 0; i < n ;i++){ for(int j = 0; j < n; j++) scanf("%c", &c[i][j]); scanf("%c", &t); }
int now = 1; now <<= n*n+1; now--; //printf("%d\n", now); int ANS = 0; while(now--) { change(now); if(isTrue()){ ANS = max(ANS, ans()); } } printf("%d\n", ANS); return 0; }