#include <stdio.h>
int n;
char a[15][15], b[15][15],c[15][15],d[15][15],x;
int dz(void)
{
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
if (b[i][j] != a[i][j])return 0;
}
}
return 1;
}
int bzq(void)
{
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
b[j][n - i + 1] = d[i][j];
}
}
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
d[i][j] = b[i][j];
}
}
if (dz())return 1;
return 0;
}
int bzr(void)
{
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
b[i][n - j + 1] = c[i][j];
}
}
if (dz())return 1;
return 0;
}
int bzt(void)
{
bzr();
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
d[i][j] = b[i][j];
}
}
if (bzq())return 1;
if (bzq())return 1;
if (bzq())return 1;
return 0;
}
int bzy(void)
{
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
b[i][j] = c[i][j];
}
}
if (dz())return 1;
return 0;
}
int bz(void)
{
if (bzq())return 1;
if (bzq())return 2;
if (bzq())return 3;
if (bzr())return 4;
if (bzt())return 5;
if (bzy())return 6;
return 7;
}
int main()
{
scanf("%d", &n);
getchar();
for (int i = 1; i <= n*2; i++)
{
int j = 1;
while((x = getchar()) != '\n')
{
if (i <= n)
{
d[i][j] = c[i][j] = x;
}
else
{
a[i - n][j] = x;
}
j++;
}
}
printf("%d", bz());
return 0;
}