#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; typedef unsigned int ui; const ll mod = (ll)(1e+9) + 7; const ll INF = (ll)1000000007 * 1000000007; typedef pair P; #define stop char nyaa;cin>>nyaa; #define rep(i,n) for(int i=0;i=0;i--) #define Rep(i,sta,n) for(int i=sta;i=1;i--) #define Rep1(i,sta,n) for(int i=sta;i<=n;i++) typedef long double ld; typedef complex Point; const ld eps = 1e-8; const ld pi = acos(-1.0); typedef pair LP; typedef pair LDP; char w[6][6]; bool comp(P x, P y) { if (x.first != y.first)return x.first > y.first; return x.second < y.second; } int main() { int n; cin >> n; int m = n * (n - 1) / 2; rep(i, n) { rep(j, n) { cin >> w[i][j]; } } int out = 10; rep(k, (1 << m)) { int c[6] = {}; int h = 0; rep(i, n) { Rep(j, i + 1, n) { if (w[i][j] == 'o' || (w[i][j] == '-' && (k&(1 << h)))) { c[i]++; } else c[j]++; h++; } } vector

v; rep(i, n) { v.push_back({ c[i],i }); } sort(v.begin(), v.end(),comp); int r = 0; int hosei = 0; rep(i, n) { if (i >= n - hosei)break; if (i > 0 && v[i].first == v[i - 1].first) { i--; v.erase(v.begin() + i); hosei++; } if (!v[i].second)r = i + 1; //cout << v[i].first << " " << v[i].second << endl; } //cout << endl; out = min(out, r); } cout << out << endl; return 0; }