#include <bits/stdc++.h>
using namespace std;
template <typename T>
void read(T& x) {
  x = 0;
  int f = 1;
  char ch = getchar();
  while (!isdigit(ch)) {
    if (ch == '-') f *= -1;
    ch = getchar();
  }
  while (isdigit(ch)) {
    x = x * 10 + (ch - '0');
    ch = getchar();
  }
  x *= f;
}
template <typename T>
void write(T x) {
  if (x < 0) putchar('-'), x = -x;
  if (x > 9) write(x / 10);
  putchar(x % 10 + '0');
}
const int maxn = 1e3 + 10;
int n, k;
char str[maxn];
bool dp[maxn][maxn << 1];
int pre[maxn][maxn << 1];
void dfs(int pos, int con) {
  if (pos <= 0) return;
  char ch;
  if (str[pos] != '?')
    ch = str[pos];
  else {
    if (pre[pos][con] == con + 1) {
      ch = 'L';
    } else if (pre[pos][con] == con) {
      ch = 'D';
    } else {
      ch = 'W';
    }
  }
  dfs(pos - 1, pre[pos][con]);
  putchar(ch);
}
int main() {
  read(n), read(k);
  scanf("%s", str + 1);
  dp[0][0 + maxn] = 1;
  for (int i = 1; i <= n; ++i) {
    if (str[i] == '?') {
      for (int j = maxn - k + 2; j <= maxn + k; ++j) {
        if (dp[i - 1][j - 1]) {
          dp[i][j] |= 1;
          pre[i][j] = j - 1;
        }
      }
      for (int j = maxn - k; j < maxn + k - 1; ++j) {
        if (dp[i - 1][j + 1]) {
          dp[i][j] |= 1;
          pre[i][j] = j + 1;
        }
      }
      for (int j = maxn - k + 1; j <= maxn + k - 1; ++j) {
        if (dp[i - 1][j]) {
          dp[i][j] |= 1;
          pre[i][j] = j;
        }
      }
    } else if (str[i] == 'W') {
      for (int j = maxn - k + 2; j <= maxn + k; ++j) {
        if (dp[i - 1][j - 1]) {
          dp[i][j] |= 1;
          pre[i][j] = j - 1;
        }
      }
    } else if (str[i] == 'L') {
      for (int j = maxn - k; j < maxn + k - 1; ++j) {
        if (dp[i - 1][j + 1]) {
          dp[i][j] |= 1;
          pre[i][j] = j + 1;
        }
      }
    } else if (str[i] == 'D') {
      for (int j = maxn - k + 1; j <= maxn + k - 1; ++j) {
        if (dp[i - 1][j]) {
          dp[i][j] |= 1;
          pre[i][j] = j;
        }
      }
    }
  }
  if (dp[n][maxn - k] == false && dp[n][maxn + k] == false) {
    puts("NO");
  } else {
    if (dp[n][maxn - k]) {
      dfs(n, maxn - k);
    } else {
      dfs(n, maxn + k);
    }
  }
  return 0;
}
