#include <bits/stdc++.h>
using namespace std;
const int mxn = 1005;
const int mxm = 3005;
int n, m;
char str[mxn];
bool valid[mxn][mxm];
inline void print(int p) {
  stack<char> ans;
  for (int i = n; i; --i) switch (str[i - 1]) {
      case 'L':
        ans.push('L');
        p = p + 1;
        break;
      case 'W':
        ans.push('W');
        p = p - 1;
        break;
      case 'D':
        ans.push('D');
        break;
      case '?':
        if (valid[i - 1][p - 1])
          ans.push('W'), p = p - 1;
        else if (valid[i - 1][p + 1])
          ans.push('L'), p = p + 1;
        else
          ans.push('D');
        break;
    }
  while (!ans.empty()) cout << ans.top(), ans.pop();
}
signed main() {
  cin >> n >> m >> str;
  valid[0][1500] = true;
  for (int i = 0; i < n; ++i) {
    valid[i][1500 + m] = false;
    valid[i][1500 - m] = false;
    switch (str[i]) {
      case 'L':
        for (int j = 0; j < mxm; ++j)
          if (valid[i][j]) valid[i + 1][j - 1] = true;
        break;
      case 'W':
        for (int j = 0; j < mxm; ++j)
          if (valid[i][j]) valid[i + 1][j + 1] = true;
        break;
      case 'D':
        for (int j = 0; j < mxm; ++j)
          if (valid[i][j]) valid[i + 1][j] = true;
        break;
      case '?':
        for (int j = 0; j < mxm; ++j)
          if (valid[i][j]) {
            valid[i + 1][j] = true;
            valid[i + 1][j - 1] = true;
            valid[i + 1][j + 1] = true;
          }
        break;
    }
  }
  if (valid[n][1500 + m]) return print(1500 + m), 0;
  if (valid[n][1500 - m]) return print(1500 - m), 0;
  return puts("NO"), 0;
}
