#include <iostream>
#include <vector>
using namespace std;
int main() {
int n; // n為矩陣階數
while(cin>>n) {
int x, y, i, j; // 用於循環控制
vector< vector<int> > vec1(n, vector<int>(n));
vector< vector<int> > vec2(n, vector<int>(n));
// 向動態數組中存入數據
for(x=0; x<n; x++) {
for(y=0; y<n; y++) {
int mid; // 中間變量,用於向vec1中存入數據
cin>>mid;
vec1[x][y] = mid;
}
}
for(x=0; x<n; x++) {
for(y=0; y<n; y++) {
int mid; // 中間變量,用於向vec2中存入數據
cin>>mid;
vec2[x][y] = mid;
}
}
int flag = 0; // 用於判定全部元素是否符合旋轉角度,是flag=1,否flag=0
int angle = -1; // 記錄旋轉角度
// 判斷旋轉角度是否為0
for(i=0; i<n; i++) {
for(j=0; j<n; j++) {
if(vec1[i][j] == vec2[i][j]) {
flag = 1;
continue;
}
else {
flag = 0;
break;
}
}
if(flag == 1) {
continue;
}
else {
break;
}
}
if(flag == 1) {
angle = 0;
cout<<angle<<endl;
continue;
}
else {
angle = -1;
}
// 判斷旋轉角度是否為90
for(i=0; i<n; i++) {
for(j=0; j<n; j++) {
if(vec1[i][j] == vec2[j][n-1-i]) {
flag = 1;
continue;
}
else {
flag = 0;
break;
}
}
if(flag == 1) {
continue;
}
else {
break;
}
}
if(flag == 1) {
angle = 90;
cout<<angle<<endl;
continue;
}
else {
angle = -1;
}
// 判斷旋轉角度是否為180
for(i=0; i<n; i++) {
for(j=0; j<n; j++) {
if(vec1[i][j] == vec2[n-1-i][n-1-j]) {
flag = 1;
continue;
}
else {
flag = 0;
break;
}
}
if(flag == 1) {
continue;
}
else {
break;
}
}
if(flag == 1) {
angle = 180;
cout<<angle<<endl;
continue;
}
else {
angle = -1;
}
// 判斷旋轉角度是否為279
for(i=0; i<n; i++) {
for(j=0; j<n; j++) {
if(vec1[i][j] == vec2[n-1-j][i]) {
flag = 1;
continue;
}
else {
flag = 0;
break;
}
}
if(flag == 1) {
continue;
}
else {
break;
}
}
if(flag == 1) {
angle = 270;
cout<<angle<<endl;
continue;
}
else {
angle = -1;
}
// 若以上角度都不符合
if(angle == -1) {
cout<<angle<<endl;
continue;
}
}
return 0;
}