#include <bits/stdc++.h>
using namespace std;
template <class X>
void input(vector<X>& a, int N) {
  X temp;
  for (long long int i = 0; i < N; i++) {
    cin >> temp;
    a.push_back(temp);
  }
}
void solve() {
  string a, b, c, d;
  cin >> a >> b >> c >> d;
  vector<char> x;
  vector<char> y;
  if (a[0] == 'A') {
    x.push_back('A');
    if (a[1] != 'X') x.push_back(a[1]);
    if (b[1] != 'X') x.push_back(b[1]);
    if (b[0] != 'X') x.push_back(b[0]);
  } else if (a[1] == 'A') {
    x.push_back('A');
    if (b[1] != 'X') x.push_back(b[1]);
    if (b[0] != 'X') x.push_back(b[0]);
    if (a[0] != 'X') x.push_back(a[0]);
  } else if (b[0] == 'A') {
    x.push_back('A');
    if (a[0] != 'X') x.push_back(a[0]);
    if (a[1] != 'X') x.push_back(a[1]);
    if (b[1] != 'X') x.push_back(b[1]);
  } else {
    x.push_back('A');
    if (b[0] != 'X') x.push_back(b[0]);
    if (a[0] != 'X') x.push_back(a[0]);
    if (a[1] != 'X') x.push_back(a[1]);
  }
  if (c[0] == 'A') {
    y.push_back('A');
    if (c[1] != 'X') y.push_back(c[1]);
    if (d[1] != 'X') y.push_back(d[1]);
    if (d[0] != 'X') y.push_back(d[0]);
  } else if (c[1] == 'A') {
    y.push_back('A');
    if (d[1] != 'X') y.push_back(d[1]);
    if (d[0] != 'X') y.push_back(d[0]);
    if (c[0] != 'X') y.push_back(c[0]);
  } else if (d[0] == 'A') {
    y.push_back('A');
    if (c[0] != 'X') y.push_back(c[0]);
    if (c[1] != 'X') y.push_back(c[1]);
    if (d[1] != 'X') y.push_back(d[1]);
  } else {
    y.push_back('A');
    if (d[0] != 'X') y.push_back(d[0]);
    if (c[0] != 'X') y.push_back(c[0]);
    if (c[1] != 'X') y.push_back(c[1]);
  }
  if (x[0] == y[0] && x[1] == y[1] && x[2] == y[2]) {
    cout << "YES";
  } else {
    cout << "NO";
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int t;
  t = 1;
  while (t--) {
    solve();
  }
  return 0;
}
