#include <bits/stdc++.h>
using namespace std;
const int INFint = 2147483547;
const long long INF = 9223372036854775807ll;
const long long MOD = 1000000007ll;
const long double EPS = 1e-13;
string min_cyclic_shift(string s) {
  s += s;
  int n = (int)s.length();
  int i = 0, ans = 0;
  while (i < n / 2) {
    ans = i;
    int j = i + 1, k = i;
    while (j < n && s[k] <= s[j]) {
      if (s[k] < s[j])
        k = i;
      else
        ++k;
      ++j;
    }
    while (i <= k) i += j - k;
  }
  return s.substr(ans, n / 2);
}
int main() {
  ios_base::sync_with_stdio(0);
  vector<string> a(2), b(2);
  for (int i = 0; i < 2; i++) cin >> a[i];
  for (int i = 0; i < 2; i++) cin >> b[i];
  string s;
  for (int i = 0; i < 2; i++) {
    if (a[0][i] == 'X') continue;
    s += a[0][i];
  }
  for (int i = 1; i > -1; i--) {
    if (a[1][i] == 'X') continue;
    s += a[1][i];
  }
  string s1;
  for (int i = 0; i < 2; i++) {
    if (b[0][i] == 'X') continue;
    s1 += b[0][i];
  }
  for (int i = 1; i > -1; i--) {
    if (b[1][i] == 'X') continue;
    s1 += b[1][i];
  }
  if (min_cyclic_shift(s) == min_cyclic_shift(s1)) {
    cout << "YES";
  } else
    cout << "NO";
  fprintf(stderr, "\nTIME = %lf\n", 1.0 * clock() / CLOCKS_PER_SEC);
  ;
  return 0;
}
