#include<stdio.h>
#include<string.h>
#include<stdbool.h>
char arr[11][11],mid[11][11],final[11][11];
int i,j;
bool turn90(char a[11][11], char b[11][11], char c[11][11],int n);
bool turn180(char a[11][11], char b[11][11], char c[11][11],int n);
bool turn270(char a[11][11], char b[11][11], char c[11][11],int n);
bool turnover(char a[11][11], char b[11][11], char c[11][11],int n);
bool group(char a[11][11], char b[11][11], char c[11][11],int n);
bool unchanged(char a[11][11], char b[11][11], char c[11][11],int n);
int main(void)
{
int n,i,j;
bool a1,a2,a3,a4,a5,a6;
scanf("%d",&n);
getchar();
for(i = 0; i < n; i++)
{
fgets(arr[i],11,stdin);
arr[i][strcspn(arr[i],"\n")] = 0;
}
for(i = 0; i < n; i++)
{
fgets(final[i],11,stdin);
final[i][strcspn(final[i],"\n")] = 0;
}
a1 = turn90(mid, arr, final, n);
a2 = turn180(mid, arr, final, n);
a3 = turn270(mid, arr, final, n);
a4 = turnover(mid, arr, final, n);
a5 = group(mid, arr, final, n);
a6 = unchanged(mid, arr, final, n);
if(a1)
printf("1\n");
else if(a2)
printf("2\n");
else if(a3)
printf("3\n");
else if(a4)
printf("4\n");
else if(a5)
printf("5\n");
else if(a6)
printf("6\n");
else
printf("7\n");
return 0;
}
bool turn90(char a[11][11], char b[11][11], char c[11][11],int n)
{
int o = 0;
for(i = 0; i < n; i++)
{
for(j = n - 1; j >= 0; j--)
a[i][n - j - 1] = b[j][i];
}
for(i = 0; i < n; i++)
{
for(j = 0; j < n; j++)
{
if(a[i][j] == c[i][j])
o++;
}
}
if(o == n * n)
return 1;
else
return 0;
}
bool turn180(char a[11][11], char b[11][11], char c[11][11],int n)
{
int o = 0;
for(i = n - 1; i >= 0; i--)
{
for(j = n - 1; j >= 0; j--)
a[n - i - 1][n - j - 1] = b[i][j];
}
for(i = 0; i < n; i++)
{
for(j = 0; j < n; j++)
{
if(a[i][j] == c[i][j])
o++;
}
}
if(o == n * n)
return 1;
else
return 0;
}
bool turn270(char a[11][11], char b[11][11], char c[11][11],int n)
{
int o = 0;
for(i = n - 1; i >= 0; i--)
{
for(j = 0; j < n; j++)
a[n - 1 - i][j] = b[j][i];
}
for(i = 0; i < n; i++)
{
for(j = 0; j < n; j++)
{
if(a[i][j] == c[i][j])
o++;
}
}
if(o == n * n)
return 1;
else
return 0;
}
bool turnover(char a[11][11], char b[11][11], char c[11][11],int n)
{
int o = 0;
for(i = 0; i < n; i++)
{
for(j = n - 1; j >= 0; j--)
a[i][n - j - 1] = b[i][j];
}
for(i = 0; i < n; i++)
{
for(j = 0; j < n; j++)
{
if(a[i][j] == c[i][j])
o++;
}
}
if(o == n * n)
return 1;
else
return 0;
}
bool group(char a[11][11], char b[11][11], char c[11][11],int n)
{
int o = 0;
for(i = 0; i < n; i++)
{
for(j = n - 1; j >= 0; j--)
a[i][n - j - 1] = b[i][j];
}
for(i = 0; i < n; i++)
{
for(j = 0; j < n; j++)
b[i][j] = a[i][j];
}
int flag = 1;
while(1)
{
if(flag == 1)
{
for(i = 0; i < n; i++)
{
for(j = n - 1; j >= 0; j--)
a[i][n - j - 1] = b[j][i];
}
for(i = 0; i < n; i++)
{
for(j = 0; j < n; j++)
{
if(a[i][j] == c[i][j])
o++;
}
}
if(o == n * n)
return 1;
else
return 0;
flag = 2;
}
if(flag == 2)
{
for(i = n - 1; i >= 0; i--)
{
for(j = n - 1; j >= 0; j--)
a[n - i - 1][n - j - 1] = b[i][j];
}
for(i = 0; i < n; i++)
{
for(j = 0; j < n; j++)
{
if(a[i][j] == c[i][j])
o++;
}
}
if(o == n * n)
return 1;
else
return 0;
flag = 3;
}
if(flag == 3)
{
for(i = n - 1; i >= 0; i--)
{
for(j = 0; j < n; j++)
a[n - 1 - i][j] = b[j][i];
}
for(i = 0; i < n; i++)
{
for(j = 0; j < n; j++)
{
if(a[i][j] == c[i][j])
o++;
}
}
if(o == n * n)
return 1;
else
return 0;
}
break;
}
return 0;
}
bool unchanged(char a[11][11], char b[11][11], char c[11][11],int n)
{
int o = 0;
for(i = 0; i < n; i++)
{
for(j = 0; j < n; j++)
{
if(a[i][j] == c[i][j])
o++;
}
}
if(o == n * n)
return 1;
else
return 0;
}