#include <bits/stdc++.h>
using namespace std;
const int maxn = 1010;
int n, k;
bool reach[maxn][maxn * 2];
char a[maxn], ans[maxn];
bool f[maxn][maxn * 2][3];
int main() {
  scanf("%d%d", &n, &k);
  scanf("%s", a + 1);
  memset(reach, false, sizeof(reach));
  memset(f, false, sizeof(f));
  reach[0][k] = true;
  for (int i = 1; i <= n; i++) {
    for (int j = 0; j <= 2 * k; j++) {
      if ((a[i] == 'W' || a[i] == '?') && j > 1) {
        reach[i][j] |= reach[i - 1][j - 1];
        f[i][j][0] = reach[i - 1][j - 1];
      }
      if ((a[i] == 'D' || a[i] == '?') && j > 0 && j < 2 * k) {
        reach[i][j] |= reach[i - 1][j];
        f[i][j][1] = reach[i - 1][j];
      }
      if ((a[i] == 'L' || a[i] == '?') && j < 2 * k - 1) {
        reach[i][j] |= reach[i - 1][j + 1];
        f[i][j][2] = reach[i - 1][j + 1];
      }
    }
  }
  if (reach[n][0]) {
    int pos = 0;
    for (int i = n; i >= 1; i--) {
      if (f[i][pos][2]) {
        ans[i] = 'L';
        pos++;
      } else if (f[i][pos][1])
        ans[i] = 'D';
      else if (f[i][pos][0]) {
        ans[i] = 'W';
        pos--;
      }
    }
  } else if (reach[n][2 * k]) {
    int pos = 2 * k;
    for (int i = n; i >= 1; i--) {
      if (f[i][pos][2]) {
        ans[i] = 'L';
        pos++;
      } else if (f[i][pos][1])
        ans[i] = 'D';
      else if (f[i][pos][0]) {
        ans[i] = 'W';
        pos--;
      }
    }
  } else {
    printf("NO\n");
    return 0;
  }
  for (int i = 1; i <= n; i++) printf("%c", ans[i]);
  printf("\n");
  return 0;
}
