func_code_string: #include <bits/stdc++.h>   using namespace std;   int a, s, d, f, g, h, j, k, l, i, n, m;   string x[2], z[2];   char c;   int dfs(int i1, int i2, int tri) {     if (x[0] == z[0] && x[1] == z[1]) {       return 1;     }     if (tri < 0) return 0;     int ret = 0;     if (i1 < 1) {       c = x[i1][i2];       x[i1][i2] = x[i1 + 1][i2];       x[i1 + 1][i2] = c;       ret = dfs(i1 + 1, i2, tri - 1);       c = x[i1][i2];       x[i1][i2] = x[i1 + 1][i2];       x[i1 + 1][i2] = c;     }     if (i1 > 0) {       c = x[i1][i2];       x[i1][i2] = x[i1 - 1][i2];       x[i1 - 1][i2] = c;       ret |= dfs(i1 - 1, i2, tri - 1);       c = x[i1][i2];       x[i1][i2] = x[i1 - 1][i2];       x[i1 - 1][i2] = c;     }     if (i2 < 1) {       c = x[i1][i2];       x[i1][i2] = x[i1][i2 + 1];       x[i1][i2 + 1] = c;       ret |= dfs(i1, i2 + 1, tri - 1);       c = x[i1][i2];       x[i1][i2] = x[i1][i2 + 1];       x[i1][i2 + 1] = c;     }     if (i2 > 0) {       c = x[i1][i2];       x[i1][i2] = x[i1][i2 - 1];       x[i1][i2 - 1] = c;       ret |= dfs(i1, i2 - 1, tri - 1);       c = x[i1][i2];       x[i1][i2] = x[i1][i2 - 1];       x[i1][i2 - 1] = c;     }     return 0 | ret;   }   int main() {     cin >> x[0] >> x[1] >> z[0] >> z[1];     for (i = 0; i < 2; i++) {       for (a = 0; a < 2; a++) {         if (x[i][a] ==  X ) {           l = i;           j = a;         }       }     }     if (dfs(l, j, 20) != 0)       cout <<  YES ;     else       cout <<  NO ;   }   