#include <bits/stdc++.h>
using namespace std;
const int N = 12;
char fields[N][N], target[N][N];
int n;
void rotate() {
  char temp[N][N];
  for (int j = 0; j < n; j++) {
    for (int i = n - 1; ~i; i--) {
      temp[j][n - i - 1] = fields[i][j];
    }
  }
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
      fields[i][j] = temp[i][j];
    }
  }
}
void R(int cnt) {
  for (int i = 0; i < cnt; i++) {
    rotate();
  }
}
void flipByX() {
  for (int j = 0; j < n; j++) {
    for (int s = 0, t = n - 1; s < t; s++, t--) {
      swap(fields[s][j], fields[t][j]);
    }
  }
}
void flipByY() {
  for (int i = 0; i < n; i++) {
    for (int s = 0, t = n - 1; s < t; s++, t--) {
      swap(fields[i][s], fields[i][t]);
    }
  }
}
bool isSame() {
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
      if (fields[i][j] != target[i][j]) {
        return false;
      }
    }
  }
  return true;
}
bool is_rotate_same() {
  for (int i = 0; i < 4; i++) {
    R(1);
    if (isSame()) {
      return true;
    }
  }
  return false;
}
int main() {
  ios ::sync_with_stdio(false);
  cout << fixed << setprecision(16);
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    scanf("%s", fields[i]);
  }
  for (int i = 0; i < n; i++) {
    scanf("%s", target[i]);
  }
  bool same = false;
  same |= is_rotate_same();
  flipByX();
  same |= is_rotate_same();
  flipByX();
  flipByY();
  same |= is_rotate_same();
  flipByY();
  puts(same ? "Yes" : "No");
  return 0;
}
