#include "bits/stdc++.h" using namespace std; #define ll long long int #define rep(i,n) for( int i = 0; i < n; i++ ) #define rrep(i,n) for( int i = n; i >= 0; i-- ) #define REP(i,s,t) for( int i = s; i <= t; i++ ) #define RREP(i,s,t) for( int i = s; i >= t; i-- ) #define dump(x) cerr << #x << " = " << (x) << endl; #define INF 2000000000 #define mod 1000000007 #define INF2 1000000000000000000 int N; char s[6][6]; int rk(char a[6][6]) { int score[N] = {}; rep(i, N) rep(j, N) if (a[i][j] == 'o') score[i]++; int tmp = score[0]; //rep(i, N) cout << score[i] << " "; //cout << endl; sort(score, score + N, greater()); int rank = 1; int j = 0; while(true) { int k = score[j]; if (k == tmp) return rank; while (k == score[j]) j++; rank++; } } int ans = 6; void dfs(char a[6][6]) { int R = N; rep(i, N) { REP(j, i + 1, N - 1) { if (a[i][j] == '-') { char b[6][6]; char c[6][6]; rep(s, 6) rep(t, 6) b[s][t] = a[s][t]; rep(s, 6) rep(t, 6) c[s][t] = a[s][t]; b[i][j] = 'o'; b[j][i] = 'x'; dfs(b); c[i][j] = 'x'; c[j][i] = 'o'; dfs(c); return; } } } //rep(i, N) { // rep(j, N) { // cout << a[i][j]; // } // cout << endl; //} //cout << rk(a) << endl; ans = min(ans, rk(a)); } int main(void) { cin.tie(0); ios::sync_with_stdio(false); cin >> N; rep(i, N) rep(j, N) cin >> s[i][j]; dfs(s); cout << ans << endl; return 0; }