#include #include #include #include #include #include #include int dfs(char strs[8][8], int wins[8], int n) { for(int i = 0; i < n; ++i) { for(int j = i + 1; j < n; ++j) { if( strs[i][j] == '-' ) { strs[i][j] = 'o'; wins[i] += 1; int res = dfs(strs, wins, n); wins[i] -= 1; strs[i][j] = '-'; strs[i][j] = 'x'; wins[j] += 1; res = std::min(res, dfs(strs, wins, n)); wins[j] -= 1; strs[i][j] = '-'; return res; } } } int res = 1; int t[8] = {}; for(int i = 0; i < n; ++i) { t[wins[i]] += 1; } for(int i = wins[0] + 1; i < 8; ++i) { if( t[i] != 0 ) res += 1; } return res; } int main() { char strs[8][8]; int wins[8] = {}; int n; scanf("%d", &n); for(int i = 0; i < n; ++i) { scanf("%s", strs[i]); } for(int i = 0; i < n; ++i) { for(int j = 0; j < n; ++j) { if( strs[i][j] == 'o' ) { wins[i] += 1; } } } printf("%d\n", dfs(strs, wins, n)); return 0; }