#include <cmath>
#include <iostream>
#include <vector>
#include "vector"
using namespace std;
void rotate(vector<vector<int>>&matrix){//顺时针旋转矩阵
int n=matrix.size();
for(int i=0;i<n/2;i++){//水平翻转
for(int j=0;j<n;j++){
swap(matrix[i][j],matrix[n-1-i][j]);
}
}
for(int i=0;i<n;i++){//主对角线翻转
for(int j=0;j<i;j++){
swap(matrix[i][j],matrix[j][i]);
}
}
}
bool equal(vector<vector<int>>m1,vector<vector<int>>m2){//判断矩阵是否相等
int n=m1.size();
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(m1[i][j]!=m2[i][j])
return false;
}
}
return true;
}
int judge(vector<vector<int>>&m1,vector<vector<int>>&m2){
if(equal(m1,m2))//如果m1和m2本身就相等,即不用旋转
return 0;
for(int i=1;i<=3;i++){
rotate(m1);//旋转一次
if(equal(m1,m2)){//如果矩阵相等
return i*90; //返回旋转次数×90
}
}
return -1;//如果旋转三次都没能相等,说明第二个不是第一个的旋转矩阵
}
int main() {
int n;
cin>>n;
vector<vector<int>>matrix1(n,vector<int>(n,0));
vector<vector<int>>matrix2(n,vector<int>(n,0));
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
cin>>matrix1[i][j];
}
}
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
cin>>matrix2[i][j];
}
}
cout<<judge(matrix1, matrix2);
}