#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);
}