#include <iostream>
#include <vector>

enum DIR {
        DOWN = 0x80,
        LEFT_DOWN = 0x40,
        LEFT = 0x8,
        LEFT_UP = 0x1,
        UP = 0x2,
        RIGHT_UP = 0x4,
        RIGHT = 0x20,
        RIGHT_DOWN = 0x100
};

char caesar(char input, int shift) {
    return (input + shift) % ('Z' + 1) + 'A';
}




std::string getLetter(int let)
{
    char out [9][9];
    for(int i = 0; i < 9; i++)
    {
        for(int j = 0; j < 9; j++)
        {
            out[i][j] = '.';
        }
    }
    out[4][4] = '*';

    short x_add = 0;
    short y_add = 0;
    short pos_x = 4;
    short pos_y = 4;



    for(DIR dir: {DOWN, UP, RIGHT, LEFT, RIGHT_DOWN, RIGHT_UP, LEFT_DOWN, LEFT_UP})
    {


        if((let & dir) == dir)
        {
            switch(dir)
            {
                case DOWN:
                    y_add = -1;
                    break;
                case UP:
                    y_add = 1;
                    break;
                case LEFT:
                    x_add = 1;
                    break;
                case RIGHT:
                    x_add = -1;
                    break;
                case RIGHT_DOWN:
                    x_add = -1;
                    y_add = -1;
                    break;
                case RIGHT_UP:
                    x_add = -1;
                    y_add = 1;
                    break;
                case LEFT_DOWN:
                    x_add = 1;
                    y_add = -1;
                    break;
                case LEFT_UP:
                    x_add = 1;
                    y_add = 1;
                    break;
            }

            pos_x = 4;
            pos_y = 4;
            for(int i = 0; i < 3; ++i)
            {
                pos_x += x_add;
                pos_y += y_add;
                out[pos_x][pos_y] = '#';
            }
            x_add = 0;
            y_add = 0;

        }

    }

    for(int i = 0; i < 3; ++i)
    {
        pos_x += x_add;
        pos_y += y_add;
        out[pos_x][pos_y] = '#';
    }


    std::string outS;
    for(int i = 8; i >= 0; i--)
    {
        for(int j = 8; j >= 0; j--)
        {
            outS += out[j][i];
        }
       if(i != 0) outS += '\n';
    }

    return outS;
}


int main() {
    int numlet;
    int shift;
    int base_size = 8;
    short base_semaphore[] = {
            {0x80}, // down
            {0x40}, // left down
            {0x20}, // left
            {0x8}, // left up
            {0x4}, //  up
            {0x2}, // up right
            {0x1}, // right
            {0x100} // right dpwm
    };
    int alphabet[26] = {
            DOWN | LEFT_DOWN,
            DOWN | LEFT,
            DOWN | LEFT_UP,
            DOWN | UP,
            DOWN | RIGHT_UP,
            DOWN | RIGHT,
            DOWN | RIGHT_DOWN,
            LEFT_DOWN | LEFT,
            LEFT_DOWN | LEFT_UP,
            UP | RIGHT, // J
            LEFT_DOWN | UP,
            LEFT_DOWN | RIGHT_UP,
            LEFT_DOWN | RIGHT,
            LEFT_DOWN | RIGHT_DOWN,
            LEFT | LEFT_UP, // O
            LEFT | UP,
            LEFT | RIGHT_UP,
            LEFT | RIGHT, // R
            LEFT | RIGHT_DOWN,
            LEFT_UP | UP,
            LEFT_UP | RIGHT_UP,
            UP | RIGHT_DOWN,
            RIGHT_UP | RIGHT,
            RIGHT_UP | RIGHT_DOWN,
            LEFT_UP | RIGHT,
            RIGHT | RIGHT_DOWN
    };


    if(scanf("%d %d", &numlet, &shift) != 2)
        std::cout<<"the what now"<<std::endl;

    int a;
    std::string tmp;

    /*for (int i = 0; i < base_size; ++i) {
        for (int j = i + 1; j < base_size - 1; ++j) {
            if (i * 7 + j < 'j' - 'a') {
                alphabet[i + j - 1] = base_semaphore[i] | base_semaphore[j];
            }
            if(i * 7 + j > 'j' - 'a') {
                alphabet[i + j + 1] = base_semaphore[i] | base_semaphore[j];
            }
        }
    }*/
    std::vector<int> lets;
    for(int m = 0; m < numlet; ++m)
    {
        a = 0;
        int j = 0;
        for(int i = 0; i < 9; i++)
        {

            std::cin >> tmp;

            if(i > 2 && i < 6) {
                //std::cout << tmp.substr(3, 3) << std::endl;
                for (char c : tmp.substr(3, 3)) {
                    a |= ((c == '#') << (j++));

                }
            }
        }
        lets.push_back(a);
        //std::cout << "a: " << a << std::endl;
        //std::cout << std::endl;
    }

//    std::cout << "numlet: " << numlet << std::endl;
//    for(int el: lets)
//        std::cout << el  << std::endl;


    std::vector<int> out;
    for(int letter: lets)
    {
        for(int i = 0; i < 26; i++)
        {
            if(letter == alphabet[i])
            {
                out.push_back(alphabet[(i + shift) % 26]);
            }
        }
    }

//    std::cout<<"out: "<<std::endl;
//    for(int el: out)
//        std::cout << el  << std::endl;

//    std::cout << "alp";
//    for(int j : alphabet)
//        std::cout << j << ", ";



    for(int el: out)
    {
        std::cout << getLetter(el) << std::endl;
        //std::cout << std::endl;
    }











    return 0;
}