#include<bits/stdc++.h>
using namespace std;
inline void input(int&);
int n;
char st[12][12],ed[12][12];
int main()
{
input(n);
for(int i=0;i<n;i++)
{
fgets(st[i],11,stdin);
}
for(int i=0;i<n;i++)
{
fgets(ed[i],11,stdin);
}
for(int i=1;i<=7;i++)
{
switch(i)
{
case 1:
{
bool bl=false;
for(int j=0;j<n;j++)
{
for(int k=0;k<n;k++)
if(st[j][k]!=ed[k][n-j-1])
{
bl=true;
break;
}
if(bl) break;
}
if(!bl)
{
puts("1");
exit(0);
}
}break;
case 2:
{
bool bl=false;
for(int j=0;j<n;j++)
{
for(int k=0;k<n;k++)
if(st[j][k]!=ed[n-j-1][n-k-1])
{
bl=true;
break;
}
if(bl) break;
}
if(!bl)
{
puts("2");
exit(0);
}
}break;
case 3:
{
bool bl=false;
for(int j=0;j<n;j++)
{
for(int k=0;k<n;k++)
if(st[j][k]!=ed[n-k-1][j])
{
bl=true;
break;
}
if(bl) break;
}
if(!bl)
{
puts("3");
exit(0);
}
}break;
case 4:
{
bool bl=false;
for(int j=0;j<n;j++)
{
for(int k=0;k<n;k++)
if(st[j][k]!=ed[n-j-1][k])
{
bl=true;
break;
}
if(bl) break;
}
if(!bl)
{
puts("4");
exit(0);
}
}break;
case 5:
{
bool bl=false;
for(int j=0;j<n;j++)
{
for(int k=0;k<n;k++)
if(st[j][k]!=ed[k][j])
{
bl=true;
break;
}
if(bl) break;
}
if(!bl)
{
puts("5");
exit(0);
}
bl=false;
for(int j=0;j<n;j++)
{
for(int k=0;k<n;k++)
if(st[j][k]!=ed[j][n-k-1])
{
bl=true;
break;
}
if(bl) break;
}
if(!bl)
{
puts("5");
exit(0);
}
bl=false;
for(int j=0;j<n;j++)
{
for(int k=0;k<n;k++)
if(st[j][k]!=ed[n-k-1][n-j-1])
{
bl=true;
break;
}
if(bl) break;
}
if(!bl)
{
puts("5");
exit(0);
}
}break;
case 6:
{
bool bl=false;
for(int j=0;j<n;j++)
{
for(int k=0;k<n;k++)
if(st[j][k]!=ed[j][k])
{
bl=true;
break;
}
if(bl) break;
}
if(!bl)
{
puts("6");
exit(0);
}
}break;
default:
puts("7");
}
}
exit(0);
}
inline void input(int &x)
{
x=0;
bool sgn=false;
char ch;
while(ch=getchar())
{
if(ch=='-')
{
sgn=true;
break;
}
if(ch>='0'&&ch<='9')
{
x=ch-'0';
break;
}
}
while(ch=getchar())
{
if(ch<'0'||ch>'9')
{
break;
}
x=(x<<1)+(x<<3)+(ch-'0');
}
if(sgn)
{
x*=-1;
}
return;
}