#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
#pragma GCC target("sse,sse2,sse3,sse3,sse4,popcnt,abm,mmx")
using namespace std;
const int N = 2e5 + 11, mod = 1e9 + 7, mod2 = 998244353;
const int MAX = 6e5 + 11;
const int INF1 = 2e9 + 11;
const long long INF2 = 2e18 + 11;
const int base = 500;
const int P = 31;
const int dx[] = {1, -1, 0, 0, 1, 1, -1, -1};
const int dy[] = {0, 0, 1, -1, 1, -1, 1, -1};
const double EPS = 1e-4;
const double PI = acos(-1.0);
template <typename T1, typename T2>
inline void chmin(T1 &a, T2 b) {
  if (a > b) a = b;
}
template <typename T1, typename T2>
inline void chmax(T1 &a, T2 b) {
  if (a < b) a = b;
}
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
int n, k;
string t[55];
vector<string> names;
int main() {
  if (fopen("peacefulsets"
            ".in",
            "r"))
    freopen(
        "peacefulsets"
        ".in",
        "r", stdin),
        freopen(
            "peacefulsets"
            ".out",
            "w", stdout);
  cin >> n >> k;
  for (int i = 1; i <= n - k + 1; i += 1) cin >> t[i];
  for (char d = 'A'; d <= 'Z'; ++d) {
    string s = "";
    s += d;
    names.emplace_back(s);
    for (char d = 'a'; d <= 'z'; ++d) {
      s += d;
      names.emplace_back(s);
      s.pop_back();
    }
    if (names.size() > 50) break;
  }
  vector<string> ans;
  int ptr = 0;
  for (int i = 1; i <= k - 1; i += 1) ans.emplace_back(names[ptr++]);
  if (t[1][0] == 'Y')
    ans.emplace_back(names[ptr++]);
  else
    ans.emplace_back(names[0]);
  int j = 2;
  for (int i = k + 1; i <= n; i += 1) {
    if (t[j++][0] == 'Y') {
      ans.emplace_back(names[ptr++]);
    } else {
      ans.emplace_back(ans[ans.size() - k + 1]);
    }
  }
  for (auto &it : ans) cout << it << " ";
  return 0;
}
