#include <bits/stdc++.h>
using namespace std;
char a[100][2][2];
char b[2][2];
int dx[] = {1, -1, 0, 0};
int dy[] = {0, 0, 1, -1};
bool check(int begin, int tot) {
  for (int l = 0; l < tot; ++l) {
    int flag = 4;
    for (int j, i = 0; i < 2; ++i)
      for (j = 0; j < 2; ++j)
        if (a[tot][i][j] == a[l][i][j]) flag--;
    if (flag == 0) return false;
  }
  return true;
}
int main() {
  int x, y;
  for (int i = 0; i < 2; ++i) scanf("%s", a[0][i]);
  for (int i = 0; i < 2; ++i) scanf("%s", b[i]);
  int tot = 1;
  int begin = 0;
  while (begin < tot) {
    for (int i = 0; i < 2; ++i)
      for (int j = 0; j < 2; ++j)
        if (a[begin][i][j] == 'X') x = i, y = j;
    for (int i = 0; i < 4; ++i) {
      int xx = x + dx[i];
      int yy = y + dy[i];
      if (xx >= 0 && xx <= 1 && yy >= 0 && yy <= 1) {
        for (int j = 0; j < 2; ++j)
          for (int l = 0; l < 2; ++l) a[tot][j][l] = a[begin][j][l];
        char t = a[tot][x][y];
        a[tot][x][y] = a[tot][xx][yy];
        a[tot][xx][yy] = t;
        if (check(begin, tot) == true) ++tot;
      }
    }
    begin++;
  }
  int l;
  for (l = 0; l < tot; ++l) {
    int flag = 1;
    for (int j, i = 0; i < 2; ++i)
      for (j = 0; j < 2; ++j)
        if (a[l][i][j] != b[i][j]) flag = 0;
    if (flag) break;
  }
  if (l < tot)
    printf("YES\n");
  else
    printf("NO\n");
  return 0;
}
