#include<bits/stdc++.h>
using namespace std;
int n;
char a[11][11];
char b[11][11];
char c[11][11];
char d[11][11];
void copy(){
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
c[i][j]=a[i][j];
}
}
}
bool same()
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(d[i][j]!=b[i][j])
{
return false;
}
}
}
return true;
}
bool all_same()
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(b[i][j]!=a[i][j])
{
return false;
}
}
}
return true;
}
int judge()
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
d[j][n-i+1]=c[i][j];
}
}
if(same())
{
return 1;
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
d[n-i+1][n-j+1]=c[i][j];
}
}
if(same())
{
return 2;
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
d[n-j+1][i]=c[i][j];
}
}
if(same())
{
return 3;
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
d[i][n-j+1]=c[i][j];
}
}
if(same())
{
return 4;
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
d[i][n-j+1]=c[i][j];
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
d[i][j]=c[j][n-i+1];
}
}
if(same())
{
return 5;
}
else
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
d[i][j]=c[j][n-i+1];
}
}
if(same())
{
return 5;
}
else
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
d[i][j]=c[j][n-i+1];
}
}
if(same())
{
return 5;
}
}
if(all_same())
{
return 6;
}
}
return 7;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
cin>>a[i][j];
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
cin>>b[i][j];
}
}
copy();
cout<<judge()<<endl;
}