#include #define rep(i,n) for(int i=(0);i<(n);i++) using namespace std; typedef long long ll; typedef pair pii; template bool chmax(T &a, const T &b) { if (a bool chmin(T &a, const T &b) { if (a>b) { a=b; return 1; } return 0; } int calc(vector b){ int a = 0; int n = b.size(); rep(j, n) if(b[0][j] == 'o') a++; set st; st.insert(a); rep(i, n - 1){ int t = 0; rep(j, n) if(b[i+1][j] == 'o') t++; st.insert(t); } return st.size() - distance(st.begin(), st.lower_bound(a)); } int main(){ cin.tie(0); ios::sync_with_stdio(false); int n; cin >> n; vector b(n); rep(i, n) cin >> b[i]; vector v; for(int i = 0; i < n; i++){ for(int j = i + 1; j < n; j++){ if(b[i][j] == '-'){ v.push_back({i, j}); } } } int k = v.size(); if(k == 0){ cout << calc(b) << endl; exit(0); } int ans = n; for(int i = 0; i < (1 << k); i++){ rep(j, k){ int r = v[j].first; int c = v[j].second; if((i >> j) & 1){ b[r][c] = 'o'; b[c][r] = 'x'; }else{ b[r][c] = 'x'; b[c][r] = 'o'; } } chmin(ans, calc(b)); } cout << ans << endl; }