#include <bits/stdc++.h>
using namespace std;
const long long inf = 1e18 + 9;
const long long mod = 1e9 + 7;
const long long maxn = 2e5 + 8;
char s[5][5], t[5][5];
long long n, m;
void solve() {
  long long i, j;
  cin >> s[1] + 1 >> s[2] + 1 >> t[1] + 1 >> t[2] + 1;
  if (s[2][2] == 'X') swap(s[2][1], s[2][2]);
  if (s[1][2] == 'X') swap(s[1][1], s[1][2]);
  if (s[1][1] == 'X') swap(s[1][1], s[2][1]);
  if (t[2][2] == 'X') swap(t[2][1], t[2][2]);
  if (t[1][2] == 'X') swap(t[1][1], t[1][2]);
  if (t[1][1] == 'X') swap(t[1][1], t[2][1]);
  if (s[1][1] == t[1][1] && s[1][2] == t[1][2] && s[2][1] == t[2][1] &&
      s[2][2] == t[2][2])
    return (void)(cout << "YES" << endl);
  swap(s[1][1], s[2][1]);
  swap(s[1][1], s[1][2]);
  swap(s[1][2], s[2][2]);
  swap(s[2][1], s[2][2]);
  if (s[1][1] == t[1][1] && s[1][2] == t[1][2] && s[2][1] == t[2][1] &&
      s[2][2] == t[2][2])
    return (void)(cout << "YES" << endl);
  swap(s[1][1], s[2][1]);
  swap(s[1][1], s[1][2]);
  swap(s[1][2], s[2][2]);
  swap(s[2][1], s[2][2]);
  if (s[1][1] == t[1][1] && s[1][2] == t[1][2] && s[2][1] == t[2][1] &&
      s[2][2] == t[2][2])
    return (void)(cout << "YES" << endl);
  swap(s[1][1], s[2][1]);
  swap(s[1][1], s[1][2]);
  swap(s[1][2], s[2][2]);
  swap(s[2][1], s[2][2]);
  if (s[1][1] == t[1][1] && s[1][2] == t[1][2] && s[2][1] == t[2][1] &&
      s[2][2] == t[2][2])
    return (void)(cout << "YES" << endl);
  cout << "NO" << endl;
}
signed main() {
  ios_base::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  long long t = 1;
  while (t--) solve();
  return 0;
}
