#include <stdio.h>
#include <string.h>
int work1(int n,char yuan[][8],char hou[][8])
{
int i,j;
char yes[8][8];
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
yes[j][n-i-1]=yuan[i][j];
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(hou[i][j]!=yes[i][j])
return 0;
}
}
return 1;
}
int work2(int n,char yuan[][8],char hou[][8])
{
int i,j;
char yes[8][8];
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
yes[n-i-1][n-j-1]=yuan[i][j];
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(hou[i][j]!=yes[i][j])
return 0;
}
}
return 1;
}
int work3(int n,char yuan[][8],char hou[][8])
{
int i,j;
char yes[8][8];
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
yes[n-j-1][i]=yuan[i][j];
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(hou[i][j]!=yes[i][j])
return 0;
}
}
return 1;
}
int work4(int n,char yuan[][8],char hou[][8])
{
int i,j;
char yes[8][8];
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
yes[i][n-j-1]=yuan[i][j];
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(hou[i][j]!=yes[i][j])
return 0;
}
}
return 1;
}
int work5(int n,char yuan[][8],char hou[][8])
{
int i,j;
char yes[8][8];
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
yes[i][n-j-1]=yuan[i][j];
}
}
if(work1(n, yes, hou)||work2(n, yes, hou)||work3(n, yes, hou))
return 1;
return 0;
}
int work6(int n,char yuan[8][8],char hou[8][8])
{
int i,j;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
if(yuan[i][j]!=hou[i][j])
return 0;
}
return 1;
}
int main()
{
int n;
char yuan[8][8],hou[8][8],yes[8][8];
int i,j,flag[7]={1,1,1,1,1,1,1};
scanf("%d",&n);
getchar();
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
yuan[i][j]=getchar();
}
getchar();
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
hou[i][j]=getchar();
}
getchar();
}
if(work1(n, yuan, hou))
{
printf("1");
return 0;
}
if(work2(n, yuan, hou))
{
printf("2");
return 0;
}
if(work3(n, yuan, hou))
{
printf("3");
return 0;
}
if(work4(n, yuan, hou))
{
printf("4");
return 0;
}
if(work5(n, yuan, hou))
{
printf("5");
return 0;
}
if(work6(n,yuan,hou))
{
printf("6");
return 0;
}
printf("7");
return 0;
}