def tran(a):
b=[]
for i in range(len(a)):
b.append(a[i])
return b
def span(n):
a=str()
for i in range(0,n):
a+=input()
b=tran(a)
return b
def zhuan(a):
n=int(len(a)**0.5)
c=[0]*n*n
for j in range(0,n):
for i in range(j,n*n,n):
c[i]=a[(n-j-1)*n+i//n]
return c
def mirror(a):
n=int(len(a)**0.5)
c=[0]*n*n
for j in range(0,n):
for i in range(j,n*n,n):
c[i]=a[(i//n+1)*n-1-i%n]
return c
n=int(input())
a=1
IN=span(n)
OUT=span(n)
TRAN=zhuan(IN)
if OUT!=TRAN:
TRAN=zhuan(TRAN)
a+=1
if OUT!=TRAN:
TRAN=zhuan(TRAN)
a+=1
if OUT!=TRAN:
TRAN=zhuan(TRAN)
TRAN=mirror(TRAN)
a+=1
if OUT!=TRAN:
a+=1
for M in range(3):
TRAN=zhuan(TRAN)
if OUT==TRAN:
break
if OUT!=TRAN:
a+=1
TRAN=zhuan(TRAN)
TRAN=mirror(TRAN)
if OUT!=TRAN:
a+=1
print(a)