#include <bits/stdc++.h>
using namespace std;
const int MAX = 2001;
const int MOD = 1000000007;
const int INF = 1e8;
const long long LLINF = 0x3f3f3f3f3f3f3f3f;
const long double EPS = 1e-7;
string s;
int n, k;
int tab[MAX][MAX];
int prox[MAX][MAX];
char tipo[MAX][MAX];
map<int, int> m = {{'L', -1}, {'D', 0}, {'W', 1}};
int dp(int idx, int val) {
  if (tab[idx][val] != -1) return tab[idx][val];
  if (idx >= n) return (abs(val) == k) ? true : false;
  if (abs(val) == k) return false;
  if (s[idx] != '?') {
    prox[idx][val] = val + m[s[idx]];
    tipo[idx][val] = s[idx];
    return tab[idx][val] = dp(idx + 1, val + m[s[idx]]);
  }
  bool opw = dp(idx + 1, val + 1);
  bool opd = dp(idx + 1, val);
  bool opl = dp(idx + 1, val - 1);
  if (opw) {
    prox[idx][val] = val + 1;
    tipo[idx][val] = 'W';
  } else if (opd) {
    prox[idx][val] = val;
    tipo[idx][val] = 'D';
  } else if (opl) {
    prox[idx][val] = val - 1;
    tipo[idx][val] = 'L';
  }
  return tab[idx][val] = opw | opd | opl;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  ;
  cin >> n >> k;
  cin >> s;
  memset(tab, -1, sizeof(tab));
  bool win = dp(0, 0);
  if (!win) {
    cout << "NO" << '\n';
  } else {
    int val = 0;
    for (int idx = 0; idx < n; idx++) {
      cout << tipo[idx][val];
      val = prox[idx][val];
    }
    cout << '\n';
  }
  return 0;
}
