#include<iostream>
#include<string>
using namespace std;
char s1[11][11];
char s2[11][11];
char news[11][11];
int n;
bool work1() {
int h = n;
int l = 1;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
news[i][j] = s1[h--][l];
}
h = n;
l++;
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
if (news[i][j] != s2[i][j]) {
return false;
}
}
}
return true;
}
bool work2() {
int h = n;
int l = n;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
news[i][j] = s1[h][l--];
}
h--;
l=n;
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
if (news[i][j] != s2[i][j]) {
return false;
}
}
}
return true;
}
bool work3() {
int h=1;
int l=n;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
news[j][i] = s1[h++][l];
}
h=1;
l--;
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
if (news[i][j] != s2[i][j]) {
return false;
}
}
}
return true;
}
bool work4() {
int h = n;
for (int i = 1; i <=n; i++) {
for (int j = 1; j <=n/2; j++) {
news[i][j] = s1[i][h--];
}
h = n;
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
if (news[i][j] != s2[i][j]) {
return false;
}
}
}
return true;
}
bool work5() {
int h = n;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
news[i][j] = s1[i][h--];
}
h = n;
}
if (work1()) {
return true;
}
else if (work2()) {
return true;
}
else if (work3()) {
return true;
}
return false;
}
bool work6() {
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= 3; j++) {
if (s1[i][j] != s2[i][j]) {
return false;
}
}
}
return true;
}
int main() {
cin >> n;
for (int i = 1; i<= n; i++) {
for (int j = 1; j <= 3; j++) {
cin >> s1[i][j];
news[i][j] = s1[i][j];
}
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= 3; j++) {
cin >> s2[i][j];
}
}
if (work6()) {
cout << 6;
}
else if (work1()) {
cout << 1;
}
else if (work2()) {
cout << 2;
}
else if (work3()) {
cout << 3;
}
else if (work4()) {
cout << 4;
}
else if (work5()) {
cout << 5;
}
else {
return 7;
}
return 0;
}