#include #include #include #include using namespace std; char m[9][9]; vector win; int n; int calc() { vector copy = win; sort(copy.begin() + 1, copy.end()); int rank = 1; int score = win[0]; for (int i = 1; i < n; ++i) { if (copy[i] > score && copy[i - 1] != copy[i]) ++rank; } return rank; } int call(int x, int y) { if (x >= n) { x = ++y; if (y >= n) { return calc(); } } if (m[x][y] == 'o') { ++win[x]; int ret = call(x + 1, y); --win[x]; return ret; } if (m[x][y] == 'x') { ++win[y]; int ret = call(x + 1, y); --win[y]; return ret; } if (m[x][y] == '-') { ++win[x]; int win_rank = call(x + 1, y); --win[x]; ++win[y]; int lose_rank = call(x + 1, y); --win[y]; return win_rank > lose_rank ? lose_rank : win_rank; } return call(x + 1, y); } int main() { cin >> n; win = vector(n, 0); for (int i = 0; i < n; ++i) { scanf("%s", m[i]); } printf("%d\n", call(0, 0)); }