#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; long long MOD = 1000000007; int N; int B[6][6]; int calc() { vector V; int s0 = 0; for ( int i = 0; i < N; i++ ) { int s = 0; for ( int j = 0; j < N; j++ ) { if ( !i ) { s0 += B[i][j]; } s += B[i][j]; } V.push_back(s); } sort( V.begin(), V.end(), greater() ); int cnt = 1; for ( int i = 0; i < V.size(); i++ ) { if ( i && V[i] != V[i-1] ) { cnt++; } if ( s0 == V[i] ) { return cnt; } } } int func() { for ( int i = 0; i < N-1; i++ ) { for ( int j = i+1; j < N; j++ ) { if ( B[i][j] == 0 ) { B[i][j] = 1; B[j][i] = -1; int s1 = func(); B[i][j] = -1; B[j][i] = 1; int s2 = func(); B[i][j] = 0; B[j][i] = 0; return min( s1, s2 ); } } } return calc(); } int main() { cin >> N; for ( int i = 0; i < N; i++ ) { for ( int j = 0; j < N; j++ ) { B[i][j] = 0; } } for ( int i = 0; i < N; i++ ) { string s; cin >> s; for ( int j = 0; j < N; j++ ) { if ( s[j] == 'o' ) { B[i][j] = 1; } else if ( s[j] == 'x' ) { B[i][j] = -1; } } } // for ( int j = 1; j < N; j++ ) { // if ( B[0][j] == 0 ) { // B[0][j] = 1; // B[j][0] = -1; // } // } cout << func() << endl; return 0; }