#include <bits/stdc++.h>
using namespace std;
template <class T>
T gcd(T a, T b) {
  return b == 0 ? a : gcd(b, a % b);
}
template <typename T>
T lcm(T a, T b) {
  return a / gcd(a, b) * b;
}
template <class T>
T my_pow(T n, T p) {
  if (p == 0) return 1;
  T x = my_pow(n, p / 2);
  x = (x * x);
  if (p & 1) x = (x * n);
  return x;
}
template <class T>
T big_mod(T n, T p, T m) {
  if (p == 0) return (T)1;
  T x = big_mod(n, p / 2, m);
  x = (x * x) % m;
  if (p & 1) x = (x * n) % m;
  return x;
}
template <class T>
T extract(string s, T ret) {
  stringstream ss(s);
  ss >> ret;
  return ret;
}
string itos(long long int n) {
  string s;
  while (n) {
    s += (n % 10 + 48);
    n /= 10;
  }
  reverse(s.begin(), s.end());
  return s;
}
long long int stoi(string s) {
  long long int n = 0;
  for (__typeof(s.size()) i = 0; i < (s.size()); i++) n = n * 10 + (s[i] - 48);
  return n;
}
const long long N = 1e5 + 5, MOD = 1e9 + 7;
long long int ar[N], br[N];
long long int a, b, c, r, rr, n, m, t, ks;
string s, ss;
long long int dp[1001][1001][2];
long long int go(long long int idx, long long int loss, long long int win) {
  long long int dif = abs(loss - win);
  long long int flag = 0;
  if (win > loss) flag = 1;
  if (idx == s.size()) {
    if (abs(win - loss) == m)
      return 1LL;
    else
      return 0LL;
  }
  if (abs(loss - win) == m) return 0;
  long long int &ret = dp[idx][dif][flag];
  if (ret != -1) return ret;
  ret = 0;
  if (s[idx] == 'D')
    ret |= go(idx + 1, loss, win);
  else if (s[idx] == 'L')
    ret |= go(idx + 1, loss + 1, win);
  else if (s[idx] == 'W')
    ret |= go(idx + 1, loss, win + 1);
  else {
    ret |= go(idx + 1, loss, win);
    ret |= go(idx + 1, loss + 1, win);
    ret |= go(idx + 1, loss, win + 1);
  }
  return ret;
}
void print(long long int idx, long long int loss, long long int win) {
  long long int dif = abs(loss - win);
  long long int flag = 0;
  if (win > loss) flag = 1;
  if (idx == s.size()) {
    return;
  } else if (s[idx] == 'W') {
    cout << s[idx];
    print(idx + 1, loss, win + 1);
  } else if (s[idx] == 'D') {
    cout << s[idx];
    print(idx + 1, loss, win);
    return;
  } else if (s[idx] == 'L') {
    cout << s[idx];
    print(idx + 1, loss + 1, win);
    return;
  } else {
    if (go(idx + 1, loss + 1, win)) {
      cout << 'L';
      print(idx + 1, loss + 1, win);
      return;
    } else if (go(idx + 1, loss, win + 1)) {
      cout << 'W';
      print(idx + 1, loss, win + 1);
      return;
    } else {
      cout << 'D';
      print(idx + 1, loss, win);
      return;
    }
  }
}
int main() {
  cin >> n >> m;
  cin >> s;
  memset(dp, -1, sizeof(dp));
  if (go(0, 0, 0) == 0) {
    cout << "NO";
    return 0;
  } else {
    print(0, 0, 0);
  }
}
