#include<bits/stdc++.h>
using namespace std;
int n,cnt=0;
char z1[25][25],z2[25][25],p1[25][25],p7[25][25];
char p2[25][25],p3[25][25],p4[25][25],p5[25][25],p6[25][25];
bool ans[25]={1};//假设每个方法都行
void zhanh()
{
cnt++;
for(int i=1;i<=n;i++)//第一种方法
for(int j=1;j<=n;j++)
{
p1[i][j]=z2[j][i];
if(p1[i][j]!=z1[i][j]) ans[cnt]=0;//不同则不行
}
cnt++;//第二个
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
p2[i][j]=p1[j][i];
if(p2[i][j]!=z1[i][j]) ans[cnt]=0;
}
cnt++;//第三个
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
p3[i][j]=p2[j][i];
if(p3[i][j]!=z1[i][j]) ans[cnt]=0;
}
cnt++;//第四个
int zhans=n;
for(int i=1;i<=n;i++)
for(int j=n;j<=n;j++)
{
p4[i][j]=z2[i][zhans];
zhans--;
if(p4[i][j]!=z1[i][j]) ans[cnt]=0;
}
cnt++;//第五个
int att=n,plan4[5]={1};
char plan8[25][25];
for(int i=1;i<=n;i++)
for(int j=n;j<=n;j++)
{
p4[i][j]=z2[i][att];
zhans--;
}
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
plan8[i][j]=p4[j][i];
if(plan8[i][j]!=z1[i][j]) plan4[1]=0;
}
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
p2[i][j]=p1[j][i];
if(plan8[i][j]!=z1[i][j]) plan4[2]=0;
}
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
p3[i][j]=p2[j][i];
if(plan8[i][j]!=z1[i][j]) plan4[3]=0;
}
if(plan4[1]==0&&plan4[2]==0&&plan4[3]==0) ans[cnt]=0;
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
cin>>z1[i][j];
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
cin>>z2[i][j];
int flag=74;
for(int i=1;i<=n;i++)//第六个,不变
for(int j=1;j<=n;j++)
{
if(z1[i][j]!=z2[i][j])
flag=0;
}
if(flag==74)
{
cout<<6;
return 0;
}
for(int i=1;i<=6;i++)
{
if(ans[i]==1)
{
cout<<i;
return 0;
}
}
cout<<7;
return 0;
}