#include <bits/stdc++.h>
using namespace std;
const int nmax = 1e3 + 42;
int n, k;
char inp[nmax];
int dp[nmax][2 * nmax];
bool dfs(int result, int ind) {
  if (abs(result) == k) {
    dp[ind][nmax + result] = (ind == n + 1);
    return dp[ind][nmax + result];
  }
  if (ind == n + 1) {
    dp[ind][nmax + result] = 0;
    return 0;
  }
  if (dp[ind][nmax + result] != -1) return dp[ind][nmax + result];
  if (inp[ind] == 'L')
    dp[ind][nmax + result] = dfs(result - 1, ind + 1);
  else if (inp[ind] == 'W')
    dp[ind][nmax + result] = dfs(result + 1, ind + 1);
  else if (inp[ind] == 'D')
    dp[ind][nmax + result] = dfs(result, ind + 1);
  else {
    dp[ind][nmax + result] = (dfs(result + 1, ind + 1) | dfs(result, ind + 1) |
                              dfs(result - 1, ind + 1));
  }
  return dp[ind][nmax + result];
}
int main() {
  cin >> n >> k;
  for (int i = 1; i <= n; i++) cin >> inp[i];
  memset(dp, -1, sizeof(dp));
  if (dfs(0, 1) != 1) {
    cout << "NO" << endl;
    return 0;
  }
  int result = 0;
  for (int i = 1; i <= n; i++) {
    if (inp[i] != '?') {
      cout << inp[i];
      if (inp[i] == 'L') result--;
      if (inp[i] == 'W') result++;
    } else {
      if (dp[i + 1][nmax + result + 1] == 1)
        cout << 'W', result++;
      else if (dp[i + 1][nmax + result] == 1)
        cout << 'D';
      else
        cout << 'L', result--;
    }
  }
  return 0;
}
