n = int(input()) s = [input().strip() for _ in range(n)] current_wins = [0] * n for i in range(n): cnt = 0 for j in range(n): if i == j: continue if s[i][j] == 'o': cnt += 1 current_wins[i] = cnt remaining = [] for i in range(n): for j in range(i + 1, n): if s[i][j] == '-': remaining.append((i, j)) m = len(remaining) best_rank = n # Initialize with the worst possible rank for mask in range(1 << m): wins = current_wins.copy() for k in range(m): i, j = remaining[k] if (mask >> k) & 1: wins[j] += 1 else: wins[i] += 1 target = wins[0] sorted_wins = sorted(wins, reverse=True) rank = 1 for w in sorted_wins: if w > target: rank += 1 else: break if rank < best_rank: best_rank = rank print(best_rank)