#include <bits/stdc++.h>
using namespace std;
char mp[3][3], str[3];
string tag;
set<string> vis;
int dir[4][2] = {1, 0, 0, 1, -1, 0, 0, -1};
bool dfs(int x, int y) {
  string tmp = "";
  for (int i = 0; i < 2; i++) {
    for (int j = 0; j < 2; j++) {
      tmp += mp[i][j];
    }
  }
  if (vis.count(tmp)) return false;
  if (tmp == tag) return true;
  vis.insert(tmp);
  for (int i = 0; i < 4; i++) {
    int nx = x + dir[i][0];
    int ny = y + dir[i][1];
    if (nx >= 0 && nx < 2 && ny >= 0 && ny < 2) {
      swap(mp[x][y], mp[nx][ny]);
      if (dfs(nx, ny)) return true;
      swap(mp[x][y], mp[nx][ny]);
    }
  }
  return false;
}
int main() {
  int x, y;
  for (int i = 0; i < 2; i++) {
    scanf("%s", mp[i]);
    for (int j = 0; j < 2; j++) {
      if (mp[i][j] == 'X') {
        x = i;
        y = j;
      }
    }
  }
  for (int i = 0; i < 2; i++) {
    scanf("%s", str);
    tag += str;
  }
  puts(dfs(x, y) ? "YES" : "NO");
  return 0;
}
