def seq_to_num(seq):
    num_list = []
    for c in seq[::-1]:
        if c == '.':
            num_list.append(0)
        else:
            num_list.append(1)

    # print(num_list) 
    num = 0
    for i in range(len(num_list)):
        num += num_list[i] * (2**i)
    return num

def test_seq_to_num():
    seq1 = ['.', 'X', 'X']
    seq2 = ['.', '.', '.']
    seq3 = ['.', '.', 'X']
    seq4 = ['X', 'X', 'X']
    seqs = [seq1, seq2, seq3, seq4]

    for seq in seqs:
        num = seq_to_num(seq)
        print(f"{seq}: {num}")


if __name__ == "__main__":
    test_seq_to_num()
    R, K = [int(c) for c in input().split(" ")]
    start_state = list(input())
    # print(R, K)
    # print(start_state)

    # 0. turn R into binary array
    bin_R = [int(c) for c in list(bin(R)[2:])]

    print(bin_R)
    # 0.1 pad with zeros
    bin_R = [*[0 for _ in range(8-len(bin_R))], *bin_R][::-1]
    print("bin_array: ", bin_R)
    # exit(0)

    for k in range(K):
        curr_state = start_state.copy()
        for i in range(0, len(start_state)):
            # 1. create current sequence
            if i > 0 and i < len(start_state)-1:
                curr_seq = start_state[i-1:i+2]
            elif i == 0:
                curr_seq = ['.', *start_state[0:2]]
            else:
                curr_seq = [*start_state[i-1:i+1], '.']
            
            # print("i: ", curr_seq)

            # 2. assign new value to i-th value
            num = seq_to_num(curr_seq)
            # print("num: ", num)
            res = '.' if bin_R[num] == 0 else 'X'
            curr_state[i] = res
            # break
        print(''.join(curr_state))
        start_state = curr_state