func_code_string: #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;   }   