N = input()
s = [list(raw_input()) for i in xrange(N)]
win = [s[i].count('o') for i in xrange(N)]
for i in xrange(1,N):
	if s[0][i] == '-':
		s[0][i] = 'o'
		s[i][0] = 'x'
		win[0] += 1
for i in xrange(1,N):
	if win[i] > win[0]:
		for j in xrange(1,N):
			if s[i][j] == '-':
				s[i][j] = 'o'
				s[j][i] = 'x'
				win[i] += 1
for i in xrange(1,N):
	for j in xrange(1,N):
		if win[i] >= win[0]:
			break
		if s[i][j] == '-':
			s[i][j] = 'o'
			s[j][i] = 'x'
			win[i] += 1
will = [s[i].count('-') for i in xrange(N)]
while sum(will) > 0:
	tmp = max(xrange(N),key = lambda x: will[x], reverse = True)
	for i in xrange(N):
		if s[tmp][i] == '-':
			s[tmp][i] = 'o'
			s[i][tmp] = 'x'
			win[tmp] += 1
			will[tmp] -= 1
tmpv = N
rank = 0
for i in sorted(range(N),key = lambda x: win[x],reverse = True):
	if win[i] < tmpv:
		rank += 1
		tmpv = win[i]
	if i == 0:
		print rank
		break