#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 10;
const int TMXN = 1e6 * 4 + 1;
const int INF = 1e9 + 7;
const long long INFL = 1e18;
vector<char> a;
vector<char> b;
char x;
int sz;
bool any = false;
int cnt;
void rec(vector<char> v, int lvl) {
  if (lvl > 10) {
    return;
  }
  for (int i = 0; i < v.size(); i++) {
    if (v[i] != a[i]) {
      break;
    }
    if (i == v.size() - 1) {
      any = true;
    }
  }
  vector<char> c;
  c = v;
  for (int i = 0; i < 4; i++) {
    v = c;
    if (v[i] == 'X') {
      if (i == 0) {
        swap(v[i], v[1]);
        rec(v, lvl + 1);
        v = c;
        swap(v[i], v[2]);
        rec(v, lvl + 1);
      }
      if (i == 1) {
        swap(v[i], v[0]);
        rec(v, lvl + 1);
        v = c;
        swap(v[i], v[3]);
        rec(v, lvl + 1);
      }
      if (i == 2) {
        swap(v[i], v[3]);
        rec(v, lvl + 1);
        v = c;
        swap(v[i], v[0]);
        rec(v, lvl + 1);
      }
      if (i == 3) {
        swap(v[i], v[1]);
        rec(v, lvl + 1);
        v = c;
        swap(v[i], v[2]);
        rec(v, lvl + 1);
      }
    }
  }
}
int main() {
  for (int i = 0; i < 2; i++) {
    for (int j = 0; j < 2; j++) {
      cin >> x;
      a.push_back(x);
    }
  }
  for (int i = 0; i < 2; i++) {
    for (int j = 0; j < 2; j++) {
      cin >> x;
      b.push_back(x);
    }
  }
  rec(b, 1);
  if (any)
    cout << "YES";
  else
    cout << "NO";
  return 0;
}
