#include #include #include #include #include #include #include #include #define REP(i,k,n) for(int i=k;i P; int main() { int n; cin >> n; vector v(n); rep(i,n) cin >> v[i]; vector cnt(n); rep(i,n) { rep(j,n) { if(v[i][j] == '#') continue; if(v[i][j] == 'o') cnt[i]++; } } set

st; rep(i,n) { rep(j,n) { if(v[i][j] == '-') { int s = i, t = j; if(s > t) swap(s,t); st.insert(P(s,t)); } } } int ans = n; int m = st.size(); if(m == 0) { int val = cnt[0]; sort(cnt.begin(),cnt.end()); cnt.erase(unique(cnt.begin(),cnt.end()),cnt.end()); reverse(cnt.begin(),cnt.end()); rep(i,cnt.size()) { if(val == cnt[i]) { ans = i; break; } } } else { vector

v2(st.begin(), st.end()); rep(i,1< res(cnt.begin(), cnt.end()); rep(j,m) { P p = v2[j]; if(i & (1<