#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using pii = pair<int, int>;
using pll = pair<ll, ll>;
using pil = pair<int, ll>;
using pli = pair<ll, int>;
using vs = vector<string>;
using vvs = vector<vs>;
using vvvs = vector<vvs>;
using vb = vector<bool>;
using vvb = vector<vb>;
using vvvb = vector<vvb>;
using vi = vector<int>;
using vvi = vector<vi>;
using vvvi = vector<vvi>;
using vl = vector<ll>;
using vvl = vector<vl>;
using vvvl = vector<vvl>;
using vd = vector<double>;
using vvd = vector<vd>;
using vvvd = vector<vvd>;
using vpii = vector<pii>;
using vvpii = vector<vpii>;
using vvvpii = vector<vvpii>;
template <class T>
bool amax(T &a, const T &b) {
  if (a < b) {
    a = b;
    return 1;
  }
  return 0;
}
template <class T>
bool amin(T &a, const T &b) {
  if (b < a) {
    a = b;
    return 1;
  }
  return 0;
}
ll ri() {
  ll l;
  cin >> l;
  return l;
}
string rs() {
  string s;
  cin >> s;
  return s;
}
template <class T>
T read() {
  T t;
  cin >> t;
  return t;
}
template <class T, class U>
ostream &operator<<(ostream &o, const pair<T, U> &p) {
  return o << '(' << p.first << ", " << p.second << ')';
}
ostream &operator<<(ostream &o, const vb &t) {
  for (auto &&e : t) o << "#."[e];
  return o;
}
template <class T>
ostream &operator<<(ostream &o, const vector<T> &t) {
  o << "{";
  for (auto &&e : t) o << e << ",";
  o << "}" << endl;
  return o;
}
void panic() {
  cout << "NO" << endl;
  exit(0);
}
string solve() {
  int n = ri();
  int k = ri();
  auto s = rs();
  int w = 0, l = 0, d = 0, u = 0;
  for (auto &&c : s) {
    if (c == 'W')
      w++;
    else if (c == 'L')
      l++;
    else if (c == 'D')
      d++;
    else if (c == '?')
      u++;
  }
  vvi dp(n + 1, vi(2 * k + 1));
  vvi fp(n + 1, vi(2 * k + 1));
  if (s[n - 1] == 'D') {
    panic();
  }
  if (s[n - 1] == 'W' || s[n - 1] == '?') {
    dp[n][k + k] = 1;
  }
  if (s[n - 1] == 'L' || s[n - 1] == '?') {
    dp[n][0] = 1;
  }
  for (int i = int(n) - 1; i >= int(0); i--)
    for (int j = int(1); j < int(2 * k); ++j) {
      char r = s[i];
      if (r == 'W' || r == '?') {
        if (amax(dp[i][j], dp[i + 1][j + 1])) {
          fp[i][j] = j + 1;
        }
      }
      if (r == 'L' || r == '?') {
        if (amax(dp[i][j], dp[i + 1][j - 1])) {
          fp[i][j] = j - 1;
        }
      }
      if (r == 'D' || r == '?') {
        if (amax(dp[i][j], dp[i + 1][j])) {
          fp[i][j] = j;
        }
      }
    };
  ;
  if (dp[0][k] == 0) panic();
  vi A;
  {
    int x = k;
    for (int i = int(0); i < int(n + 1); ++i) {
      A.emplace_back(x);
      x = fp[i][x];
    }
  };
  string ans;
  for (int i = int(0); i < int(n); ++i) {
    if (A[i] == A[i + 1])
      ans += 'D';
    else if (A[i] > A[i + 1])
      ans += 'L';
    else if (A[i] < A[i + 1])
      ans += 'W';
  };
  ;
  for (int i = int(0); i < int(n); ++i) {
    assert(s[i] == '?' || ans[i] == s[i]);
  }
  return ans;
}
void Main() { cout << solve() << endl; }
int main() {
  cin.tie(nullptr);
  ios::sync_with_stdio(false);
  Main();
  return 0;
}
