#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef vector<ll> vll;

#define fr(i,n) for (int i = 0; i<n;++i)

bool getFrom(vector<bool> &gen, ll index){
    if (index < 0) return false;
    if (index >= gen.size()) return false;
    return gen[index];
}

bool makeNew(ll a, ll b, ll c, ll mask){
    ll bitIndex = 4*a+2*b+c;
    ll bigNum = 1<<bitIndex;
    return (bigNum&mask) != 0;
}

void solve(){
    ll r, k, ssize;
    string s;
    cin >> r >> k >> s;
    ssize = s.size();

    vector<bool> lastGen;
    fr(i, ssize) lastGen.push_back(s[i]=='.'?false: true);

    fr(i, k){
        vector<bool> newGen(ssize);

        for (ll j = 0; j < ssize; ++j) {
            bool a = getFrom(lastGen, j-1);
            bool b = getFrom(lastGen, j);
            bool c = getFrom(lastGen, j+1);
            newGen[j] = makeNew(a, b, c, r);
            cout << (newGen[j]?"X":".");
        }
        cout << endl;
        lastGen = newGen;
    }
}

int main(){
    solve();
    return 0;
}