#include<iostream>
using namespace std;
int ifsame(int size,char **obj,char **subj)
{
int k=0;
for(int i=0;i<size;i++)
{
for(int j=0;j<size;j++)
{
if(obj[i][j]!=subj[i][j])
{
return 0;
}
}
}
return 1;
};
int nz(int n,char **obj,char **subj)
{
char **act=new char*[n];
for(int i=0;i<n;i++)
{
act[i]=new char[n];
for(int j=0;j<n;j++)
{
act[j][n-i-1]=obj[i][j];
}
}
int result=ifsame(n,act,subj);
for(int i=0;i<n;i++)
{
delete[] act[i];
}
delete[] act;
return result;
}
int oez(int n,char **obj,char **subj)
{
char **act=new char*[n];
for(int i=0;i<n;i++)
{
act[i]=new char[n];
for(int j=0;j<n;j++)
{
act[n-i-1][n-j-1]=obj[i][j];
}
}
int result=ifsame(n,act,subj);
for(int i=0;i<n;i++)
{
delete[] act[i];
}
delete[] act;
return result;
}
int tsz(int n,char **obj,char **subj)
{
char **act=new char*[n];
for(int i=0;i<n;i++)
{
act[i]=new char[n];
for(int j=0;j<n;j++)
{
act[n-j-1][i]=obj[i][j];
}
}
int result=ifsame(n,act,subj);
for(int i=0;i<n;i++)
{
delete[] act[i];
}
delete[] act;
return result;
}
int flip(int n,char **obj,char **subj)
{
char **act=new char*[n];
for(int i=0;i<n;i++)
{
act[i]=new char[n];
for(int j=0;j<n;j++)
{
act[i][n-j-1]=obj[i][j];
}
}
int result=ifsame(n,act,subj);
for(int i=0;i<n;i++)
{
delete[] act[i];
}
delete[] act;
return result;
}
int combination(int n,char **obj,char **subj)
{
char **act=new char*[n];
for(int i=0;i<n;i++)
{
act[i]=new char[n];
for(int j=0;j<n;j++)
{
act[i][n-j-1]=obj[i][j];
}
}
int result=0;
if(nz(n,act,subj))
{
result=1;
}
if(oez(n,act,subj))
{
result=1;
}
if((n,act,subj))
{
result=1;
}
for(int i=0;i<n;i++)
{
delete[] act[i];
}
delete[] act;
return result;
}
int main()
{
int n;
cin>>n;
char **obj=new char*[n];
char **subj=new char*[n];
for(int i=0;i<n;i++)
{
obj[i]=new char[n];
for(int j=0;j<n;j++)
{
cin>>obj[i][j];
}
}
for(int i=0;i<n;i++)
{
subj[i]=new char[n];
for(int j=0;j<n;j++)
{
cin>>subj[i][j];
}
}
if(nz(n,obj,subj))
{
cout<<"1";
}
for(int i=0;i<n;i++)
{
delete[] obj[i];
delete[] subj[i];
}
delete[] obj;
delete[] subj;
return 0;
}