#include #include #include #include #include #define LL long long using namespace std; typedef pair P; int res = 6; int cnt[6]; string judge[6]; int N,M; vector

ch; void calc(){ for (int i = 0; i < N; i++){ cnt[i] = 0; for (int j = 0; j < N; j++){ if (judge[i][j] == 'o')cnt[i]++; } } int k = 1; for (int i = N - 1; i >= 0; i--){ bool f = false; for (int j = 0; j < 6; j++){ if (cnt[j] == i) f = true; } if (cnt[0] == i) res = min(res, k); if (f)k++; } } void backtrack(int n){ if (n == M){ calc(); } else{ judge[ch[n].first][ch[n].second] = 'o'; judge[ch[n].second][ch[n].first] = 'x'; backtrack(n + 1); judge[ch[n].first][ch[n].second] = 'x'; judge[ch[n].second][ch[n].first] = 'o'; backtrack(n + 1); } } int main(){ cin >> N; res = N; for (int i = 0; i < N; i++){ cin >> judge[i]; } for (int i = 0; i < N; i++){ for (int j = i+1; j < N; j++){ if (judge[i][j] == '-')ch.push_back(make_pair(i, j)); } } M = (int)ch.size(); backtrack(0); cout << res << endl; }