#include <bits/stdc++.h>
using ll = long long;
using ull = unsigned long long;
using ld = long double;
const long long maxN = 2e3 + 100, oo = 1e9, MOD = 1e9 + 7;
using namespace std;
int n, k;
bool dp[maxN][maxN];
int pos[maxN][maxN];
string s, res;
void readInput() {
  cin >> n >> k;
  cin >> s;
}
void process() {
  dp[0][k] = 1;
  res = s;
  s = '*' + s;
  int tmp = k;
  for (int i = 1; i <= n; ++i) {
    for (int j = 0; j <= 2 * k; ++j) {
      if (s[i] == 'L') {
        pos[i][j] = 1;
        if (j + 1 < 2 * k) {
          if (dp[i - 1][j + 1]) dp[i][j] = 1;
        }
      } else if (s[i] == 'W') {
        pos[i][j] = 2;
        if (j > 1) {
          if (dp[i - 1][j - 1]) dp[i][j] = 1;
        }
      } else if (s[i] == 'D') {
        pos[i][j] = 3;
        if (dp[i - 1][j] && j != 0 && j != 2 * k) dp[i][j] = 1;
      } else {
        if (j + 1 < 2 * k && dp[i - 1][j + 1]) {
          pos[i][j] = 1;
          dp[i][j] = 1;
        } else if (j > 1 && dp[i - 1][j - 1]) {
          pos[i][j] = 2;
          dp[i][j] = 1;
        } else if (dp[i - 1][j] && j != 0 && j != 2 * k) {
          pos[i][j] = 3;
          dp[i][j] = 1;
        }
      }
    }
  }
  int i = n, j;
  if (dp[n][0]) {
    j = 0;
    while (i > 0) {
      if (pos[i][j] == 1) {
        res[i - 1] = 'L';
        ++j;
      } else if (pos[i][j] == 2) {
        res[i - 1] = 'W';
        --j;
      } else
        res[i - 1] = 'D';
      --i;
    }
    cout << res;
  } else if (dp[n][2 * k]) {
    j = 2 * k;
    while (i > 0) {
      if (pos[i][j] == 1) {
        res[i - 1] = 'L';
        ++j;
      } else if (pos[i][j] == 2) {
        res[i - 1] = 'W';
        --j;
      } else
        res[i - 1] = 'D';
      --i;
    }
    cout << res;
  } else
    cout << "NO" << '\n';
}
void writeOutput() {}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  readInput();
  process();
  writeOutput();
}
