#include <bits/stdc++.h>
using namespace std;
const int maxN = 1001, maxK = 1000, max2K = (maxK << 1) + 1;
static bitset<maxN> _f[max2K], *f = _f + maxK;
int n, k;
char s[maxN];
inline void Trace(int i, int j) {
  if (j == 0) return;
  if (s[j] == 'W')
    Trace(i - 1, j - 1), putchar('W');
  else if (s[j] == 'D')
    Trace(i, j - 1), putchar('D');
  else if (s[j] == 'L')
    Trace(i + 1, j - 1), putchar('L');
  else if (i < k - 1 && f[i + 1][j - 1])
    Trace(i + 1, j - 1), putchar('L');
  else if (i > -k + 1 && f[i - 1][j - 1])
    Trace(i - 1, j - 1), putchar('W');
  else
    Trace(i, j - 1), putchar('D');
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  scanf("%d%d%s", &n, &k, s + 1);
  f[0][0] = 1;
  for (int j = 1; j <= n; ++j)
    if (s[j] == '?') {
      for (int i = -k + 1; i < k; ++i)
        if (f[i][j - 1]) f[i - 1][j] = f[i][j] = f[i + 1][j] = 1;
    } else
      for (int i = -k + 1, val = s[j] == 'L' ? -1 : s[j] == 'W'; i < k; ++i)
        if (f[i][j - 1]) f[i + val][j] = 1;
  if (f[k][n])
    Trace(k, n);
  else if (f[-k][n])
    Trace(-k, n);
  else
    cout << "NO";
  return 0;
}
