#include <bits/stdc++.h>
using namespace std;
int n, k, a[1010], r[1010];
int last;
string s;
bool f[1010][1010 * 2], ff[1010][1010 * 2];
vector<int> v;
bool F(int n, int x) {
  if (n < last && abs(x) >= k) return false;
  if (n == 0) return (x == 0);
  if (ff[n][x + 1000]) return f[n][x + 1000];
  ff[n][x + 1000] = true;
  if (a[n] < 2) {
    return f[n][x + 1000] = F(n - 1, x - a[n]);
  }
  for (int i = -1; i <= 1; i++) {
    if (F(n - 1, x - i)) return f[n][x + 1000] = true;
  }
  return f[n][x + 1000] = false;
}
void truyvet(int n, int x) {
  if (n == 0) return;
  if (a[n] < 2) {
    v.push_back(a[n]);
    truyvet(n - 1, x - a[n]);
    return;
  }
  for (int i = -1; i <= 1; i++) {
    if (F(n - 1, x - i)) {
      v.push_back(i);
      truyvet(n - 1, x - i);
      return;
    }
  }
}
int main() {
  if (fopen("a.txt", "r")) {
    freopen("a.txt", "r", stdin);
  } else
    ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cin >> n >> k >> s;
  last = n;
  for (int i = 1; i <= n; i++) {
    if (s[i - 1] == 'L')
      a[i] = -1;
    else if (s[i - 1] == 'W')
      a[i] = 1;
    else if (s[i - 1] == '?')
      a[i] = 2;
  }
  if (F(n, k)) {
    truyvet(n, k);
    reverse(v.begin(), v.end());
    for (int x : v) {
      if (x == 0)
        cout << 'D';
      else if (x == -1)
        cout << 'L';
      else
        cout << 'W';
    }
    return 0;
  }
  if (F(n, -k)) {
    truyvet(n, -k);
    reverse(v.begin(), v.end());
    for (int x : v) {
      if (x == 0)
        cout << 'D';
      else if (x == -1)
        cout << 'L';
      else
        cout << 'W';
    }
    return 0;
  }
  cout << "NO";
}
