#include <bits/stdc++.h>
using namespace std;
const int MAXN = 2e5 + 1;
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int n, k;
  string s;
  cin >> n >> k >> s;
  s = '1' + s;
  vector<vector<char> > dp(n + 1, vector<char>(2 * k + 2, false)),
      a(n + 1, vector<char>(2 * k + 2));
  dp[0][k] = true;
  for (int i = 1; i <= n; ++i) {
    for (int j = 0; j <= 2 * k; ++j) {
      if (dp[i - 1][j]) {
        if (s[i] == 'L' && j && (i != n && (j - 1) != 0 || i == n)) {
          dp[i][j - 1] = true;
          a[i][j - 1] = 'L';
        } else if (s[i] == 'W' && (i != n && j + 1 != 2 * k || i == n)) {
          dp[i][j + 1] = true;
          a[i][j + 1] = 'W';
        } else if (s[i] == 'D' && i != n) {
          dp[i][j] = true;
          a[i][j] = 'D';
        } else if (s[i] == '?') {
          if (i != n && j && (j - 1) || i == n) {
            dp[i][j - 1] = true;
            a[i][j - 1] = 'L';
          }
          if (i != n && j + 1 != 2 * k || i == n) {
            dp[i][j + 1] = true;
            a[i][j + 1] = 'W';
          }
          if (i != n) {
            dp[i][j] = true;
            a[i][j] = 'D';
          }
        }
      }
    }
  }
  if (dp[n][2 * k]) {
    int i = n, j = 2 * k;
    string ans;
    while (i) {
      ans = a[i][j] + ans;
      if (a[i][j] == 'W')
        j--;
      else if (a[i][j] == 'L')
        j++;
      i--;
    }
    cout << ans;
  } else if (dp[n][0]) {
    int i = n, j = 0;
    string ans;
    while (i) {
      ans = a[i][j] + ans;
      if (a[i][j] == 'W')
        j--;
      else if (a[i][j] == 'L')
        j++;
      i--;
    }
    cout << ans;
  } else
    cout << "NO\n";
}
