import java.util.HashMap;
import java.util.Scanner;

public class Wall {

    static Scanner sc = new Scanner(System.in);

    static HashMap<String, Character> vector = new HashMap<>(8); // state -> C
    static String[] states = new String[] {"XXX", "XX.", "X.X", "X..", ".XX", ".X.", "..X", "..."};


    public static void main(String[] args) {


        int rule = sc.nextInt();
        int gens = sc.nextInt();
        sc.nextLine();
        String last = sc.nextLine();
        int len = last.length();
        String binRule = Integer.toBinaryString(rule);
        if (binRule.length() < 8) {
            binRule = "0".repeat(8 - binRule.length()) + binRule;
        }

        for (int i = 0; i < states.length; i++) {
            vector.put(states[i], binRule.charAt(i) == '1' ? 'X' : '.');
        }

        for (int i = 0; i < gens; i++) {
            StringBuilder nLast = new StringBuilder();

            for (int j = 0; j < len; j++) {
                String cas = "";
                if (j == 0) {
                    cas += ".";
                } else {
                    cas += last.charAt(j - 1);
                }

                cas += last.charAt(j);

                if (j == len - 1) {
                    cas += ".";
                } else {
                    cas += last.charAt(j + 1);
                }

                nLast.append(vector.get(cas));
            }


            last = nLast.toString();
            System.out.println(last);

        }



    }

}
