- import java.util.Scanner; 
- import java.util.Map; 
- import java.util.HashMap; 
- class MirrorEncryption { 
-     public static char followPath(char[][] field, char c) { 
-         if ('a' <= c && c <= 'm') { 
-             return followPath(field, c - 'a', -1, 0, 1); 
-         } 
-         if ('n' <= c && c <= 'z') { 
-             return followPath(field, 13, c - 'n', -1, 0); 
-         } 
-         if ('A' <= c && c <= 'M') { 
-             return followPath(field, -1, c - 'A', 1, 0); 
-         } 
-         if ('N' <= c && c <= 'Z') { 
-             return followPath(field, c - 'N', 13, 0, -1); 
-         } 
-     } 
-     public static char followPath(char[][] field, int x, int y, int dx, int dy) { 
-         if (y + dy <= -1) { 
-             return (char) ('a' + x + dx); 
-         } else if (x + dx >= 13) { 
-             return (char) ('n' + y + dy); 
-         } else if (x + dx <= -1) { 
-             return (char) ('A' + y + dy); 
-         } else if (y + dy >= 13) { 
-             return (char) ('N' + x + dx); 
-         } else { 
-             switch (field[x + dx][y + dy]) { 
-                 case ' ': 
-                     return followPath(field, x + dx, y + dy, dx, dy); 
-                 case '\\': 
-                     return followPath(field, x + dx, y + dy, dy, dx); 
-                 case '/': 
-                     return followPath(field, x + dx, y + dy, -dy, -dx); 
-                 default: 
-             } 
-         } 
-     } 
-     public static void-  main (String[]-  args ) {
 
-         Scanner scanner  = new-  Scanner (System- . in);
-         char[][] field = new char[13][13]; 
-         for (int y = 0; y < 13; y++) { 
-             String-  line  =-  scanner. nextLine();
 
-             for (int x = 0; x < 13; x++) { 
-                 field[x][y] = line.charAt(x); 
-             } 
-         } 
-         String-  word  =-  scanner. nextLine();
 
-         Map <Character- ,Character >-  encryption  = new-  HashMap <>();
-         for (int i = 0; i < 26; i++) { 
-             encryption.put((char) ('a' + i), followPath(field, (char) ('a' + i))); 
-             encryption.put((char) ('A' + i), followPath(field, (char) ('A' + i))); 
-         } 
-         for (char c : word.toCharArray()) { 
-             System- . out- . print(- encryption. get(- c ));
 
-         } 
-     } 
- } 
				aW1wb3J0IGphdmEudXRpbC5TY2FubmVyOwppbXBvcnQgamF2YS51dGlsLk1hcDsKaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwpjbGFzcyBNaXJyb3JFbmNyeXB0aW9uIHsKICAgIHB1YmxpYyBzdGF0aWMgY2hhciBmb2xsb3dQYXRoKGNoYXJbXVtdIGZpZWxkLCBjaGFyIGMpIHsKICAgICAgICBpZiAoJ2EnIDw9IGMgJiYgYyA8PSAnbScpIHsKICAgICAgICAgICAgcmV0dXJuIGZvbGxvd1BhdGgoZmllbGQsIGMgLSAnYScsIC0xLCAwLCAxKTsKICAgICAgICB9CiAgICAgICAgaWYgKCduJyA8PSBjICYmIGMgPD0gJ3onKSB7CiAgICAgICAgICAgIHJldHVybiBmb2xsb3dQYXRoKGZpZWxkLCAxMywgYyAtICduJywgLTEsIDApOwogICAgICAgIH0KICAgICAgICBpZiAoJ0EnIDw9IGMgJiYgYyA8PSAnTScpIHsKICAgICAgICAgICAgcmV0dXJuIGZvbGxvd1BhdGgoZmllbGQsIC0xLCBjIC0gJ0EnLCAxLCAwKTsKICAgICAgICB9CiAgICAgICAgaWYgKCdOJyA8PSBjICYmIGMgPD0gJ1onKSB7CiAgICAgICAgICAgIHJldHVybiBmb2xsb3dQYXRoKGZpZWxkLCBjIC0gJ04nLCAxMywgMCwgLTEpOwogICAgICAgIH0KICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbnZhbGlkIGNoYXJhY3RlciBpbiB3b3JkLiIpOwogICAgfQogICAgcHVibGljIHN0YXRpYyBjaGFyIGZvbGxvd1BhdGgoY2hhcltdW10gZmllbGQsIGludCB4LCBpbnQgeSwgaW50IGR4LCBpbnQgZHkpIHsKICAgICAgICBpZiAoeSArIGR5IDw9IC0xKSB7CiAgICAgICAgICAgIHJldHVybiAoY2hhcikgKCdhJyArIHggKyBkeCk7CiAgICAgICAgfSBlbHNlIGlmICh4ICsgZHggPj0gMTMpIHsKICAgICAgICAgICAgcmV0dXJuIChjaGFyKSAoJ24nICsgeSArIGR5KTsKICAgICAgICB9IGVsc2UgaWYgKHggKyBkeCA8PSAtMSkgewogICAgICAgICAgICByZXR1cm4gKGNoYXIpICgnQScgKyB5ICsgZHkpOwogICAgICAgIH0gZWxzZSBpZiAoeSArIGR5ID49IDEzKSB7CiAgICAgICAgICAgIHJldHVybiAoY2hhcikgKCdOJyArIHggKyBkeCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgc3dpdGNoIChmaWVsZFt4ICsgZHhdW3kgKyBkeV0pIHsKICAgICAgICAgICAgICAgIGNhc2UgJyAnOgogICAgICAgICAgICAgICAgICAgIHJldHVybiBmb2xsb3dQYXRoKGZpZWxkLCB4ICsgZHgsIHkgKyBkeSwgZHgsIGR5KTsKICAgICAgICAgICAgICAgIGNhc2UgJ1xcJzoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZm9sbG93UGF0aChmaWVsZCwgeCArIGR4LCB5ICsgZHksIGR5LCBkeCk7CiAgICAgICAgICAgICAgICBjYXNlICcvJzoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZm9sbG93UGF0aChmaWVsZCwgeCArIGR4LCB5ICsgZHksIC1keSwgLWR4KTsKICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSW52YWxpZCBjaGFyYWN0ZXIgaW4gZmllbGQuIik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CiAgICAgICAgU2Nhbm5lciBzY2FubmVyID0gbmV3IFNjYW5uZXIoU3lzdGVtLmluKTsKICAgICAgICBjaGFyW11bXSBmaWVsZCA9IG5ldyBjaGFyWzEzXVsxM107CiAgICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCAxMzsgeSsrKSB7CiAgICAgICAgICAgIFN0cmluZyBsaW5lID0gc2Nhbm5lci5uZXh0TGluZSgpOwogICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IDEzOyB4KyspIHsKICAgICAgICAgICAgICAgIGZpZWxkW3hdW3ldID0gbGluZS5jaGFyQXQoeCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgU3RyaW5nIHdvcmQgPSBzY2FubmVyLm5leHRMaW5lKCk7CiAgICAgICAgTWFwPENoYXJhY3RlcixDaGFyYWN0ZXI+IGVuY3J5cHRpb24gPSBuZXcgSGFzaE1hcDw+KCk7CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyNjsgaSsrKSB7CiAgICAgICAgICAgIGVuY3J5cHRpb24ucHV0KChjaGFyKSAoJ2EnICsgaSksIGZvbGxvd1BhdGgoZmllbGQsIChjaGFyKSAoJ2EnICsgaSkpKTsKICAgICAgICAgICAgZW5jcnlwdGlvbi5wdXQoKGNoYXIpICgnQScgKyBpKSwgZm9sbG93UGF0aChmaWVsZCwgKGNoYXIpICgnQScgKyBpKSkpOwogICAgICAgIH0KICAgICAgICBmb3IgKGNoYXIgYyA6IHdvcmQudG9DaGFyQXJyYXkoKSkgewogICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KGVuY3J5cHRpb24uZ2V0KGMpKTsKICAgICAgICB9CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCk7CiAgICB9Cn0=