#include<iostream>
#include<vector>
#include<cmath>
#include<iomanip>
#include <sstream>
#include<algorithm>
bool turn90(int n,char s[20][20],char e[20][20])
{
char m[20][20];
int x = n , y = 1;
for (int i = 1; i <= n; i++)
{
x = n ;
for (int j = 1; j <= n; j++)
{
m[i][j] = s[x--][y];
}
y++;
}
int sum = 0;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
if (m[i][j] == e[i][j])
sum++;
if (sum == n * n)
return true;
else
return false;
}
bool turn180(int n, char s[20][20], char e[20][20]) {
char m[20][20];
int x = n, y = n;
for (int i = 1; i <= n; i++){
y = n;
for (int j = 1; j <= n; j++){
m[i][j] = s[x][y--];
}
x--;
}
int sum = 0;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
if (m[i][j] == e[i][j])
sum++;
if (sum == n * n)
return true;
else
return false;
}
bool turn270(int n, char s[20][20], char e[20][20]) {
char m[20][20];
int x = 1, y = n;
for (int i = 1; i <= n; i++) {
x = 1;
for (int j = 1; j <= n; j++) {
m[i][j] = s[x++][y];
}
y--;
}
int sum = 0;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
if (m[i][j] == e[i][j])
sum++;
if (sum == n * n)
return true;
else
return false;
}
bool mirror(int n, char s[20][20], char e[20][20]) {
char m[20][20];
char mm[20][20];
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
{
m[i][j] = s[i][j];
mm[i][j] = s[i][j];
}
for (int i = 1; i <= n; i++)
{
int p = n;
for (int j = 1; j <= n / 2; j++)
{
m[i][p] = m[i][j];
mm[i][j] = mm[i][p];
p--;
}
}
int sum = 0;
int sum1 = 0;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
{
if (m[i][j] == e[i][j])
sum++;
if (mm[i][j] == e[i][j])
sum1++;
}
if ((sum == n * n) || (sum1 == n * n))
return true;
else
return false;
}
bool mix(int n, char s[20][20], char e[20][20]) {
char m[20][20];
char mm[20][20];
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
{
m[i][j] = s[i][j];
mm[i][j] = s[i][j];
}
for (int i = 1; i <= n; i++)
{
int p = n;
for (int j = 1; j <= n / 2; j++)
{
m[i][j] = m[i][p];
mm[i][p] = mm[i][j];
p--;
}
}
bool sign = (turn90(n, m, e) || turn180(n, m, e) || turn270(n, m, e));
bool sign1 = (turn90(n, mm, e) || turn180(n, mm, e) || turn270(n, mm, e));
return (sign||sign1);
}
bool nochange(int n, char s[20][20], char e[20][20]) {
int sum = 0;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
if (s[i][j] == e[i][j])
sum++;
if (sum == n * n)
return true;
else
return false;
}
int main() {
int n;
char s[20][20];
char e[20][20];
std::cin >> n;
std::string ss;
for (int i = 0; i < n; i++)
{
std::cin >> ss;
for (int j = 0; j < n; j++)
s[i + 1][j + 1]=ss[j];
}
for (int i = 0; i < n; i++)
{
std::cin >> ss;
for (int j = 0; j < n; j++)
e[i + 1][j + 1] = ss[j];
}
if (turn90(n,s,e)) {
std::cout << 1;
return 0;
}
if (turn180(n, s, e)) {
std::cout << 2;
return 0;
}
if (turn270(n, s, e)) {
std::cout << 3;
return 0;
}
if (mirror(n, s, e)) {
std::cout << 4;
return 0;
}
if (mix(n, s, e)) {
std::cout << 5;
return 0;
}
if (nochange(n, s, e)) {
std::cout << 6;
return 0;
}
std::cout << 7;
return 0;
}