#include <bits/stdc++.h>
using namespace std;
char init[3][3], stop[3][3];
int dir[4][2] = {-1, 0, 1, 0, 0, 1, 0, -1};
int vis[3][3][100], flag = 0;
int check() {
  if (init[0][0] == stop[0][0] && init[0][1] == stop[0][1] &&
      init[1][0] == stop[1][0] && init[1][1] == stop[1][1])
    return 1;
  else
    return 0;
}
void dfs(int x, int y) {
  for (int i = 0; i < 4; i++) {
    int xx = x + dir[i][0];
    int yy = y + dir[i][1];
    char c = stop[xx][yy];
    if (xx < 0 || xx >= 2 || yy < 0 || yy >= 2 || vis[xx][yy][c]) continue;
    swap(stop[xx][yy], stop[x][y]);
    vis[xx][yy][c] = 1;
    if (check()) flag = 1;
    dfs(xx, yy);
    swap(stop[xx][yy], stop[x][y]);
    vis[xx][yy][c] = 0;
  }
}
int main() {
  scanf("%s%s", init[0], init[1]);
  scanf("%s%s", stop[0], stop[1]);
  for (int i = 0; i < 2; i++)
    for (int k = 0; k < 2; k++)
      if (stop[i][k] == 'X') {
        vis[i][k]['X'] = 1;
        dfs(i, k);
      }
  if (flag)
    puts("YES");
  else
    puts("NO");
  return 0;
}
