#include <bits/stdc++.h>
using namespace std;
string a[3], b[3], c[3], d[3];
map<pair<string, string>, bool> M;
queue<pair<string, string>> q;
int ok, i, j, okk;
int main() {
  cin.sync_with_stdio(0);
  cout.sync_with_stdio(0);
  cin >> a[0];
  cin >> a[1];
  cin >> b[0];
  cin >> b[1];
  q.push(make_pair(a[0], a[1]));
  while (q.size()) {
    c[0] = q.front().first;
    c[1] = q.front().second;
    if (c[0] == b[0] && c[1] == b[1]) {
      ok = 1;
      break;
    }
    q.pop();
    d[0] = c[0];
    d[1] = c[1];
    okk = 0;
    for (i = 0; i < 2 && !okk; i++) {
      for (j = 0; j < 2; j++)
        if (d[i][j] == 'X') {
          okk = 1;
          break;
        }
      if (okk) break;
    }
    swap(d[0][j], d[1][j]);
    if (!M[make_pair(d[0], d[1])]) {
      M[make_pair(d[0], d[1])] = 1;
      q.push(make_pair(d[0], d[1]));
    }
    swap(c[i][0], c[i][1]);
    if (!M[make_pair(c[0], c[1])]) {
      M[make_pair(c[0], c[1])] = 1;
      q.push(make_pair(c[0], c[1]));
    }
  }
  if (ok)
    cout << "YES";
  else
    cout << "NO";
  return 0;
}
