#include <bits/stdc++.h>
static const long long MOD_NUM = 1000000007;
template <class _T>
static void get(_T& a) {
  std::cin >> a;
}
template <class _T>
static void get(_T& a, _T& b) {
  std::cin >> a >> b;
}
template <class _T>
static void get(_T& a, _T& b, _T& c) {
  std::cin >> a >> b >> c;
}
template <class _T>
static void getint(_T& a) {
  if (sizeof(_T) > sizeof(int)) {
    scanf("%lld", &a);
  } else {
    scanf("%d", &a);
  }
}
template <class _T>
static _T tp_abs(_T a) {
  if (a < (_T)0) {
    a *= (_T)-1;
  }
  return a;
}
static void exec();
int main() {
  exec();
  fflush(stdout);
  return 0;
}
static void dfs(char* ch, char targ, int pos, int len,
                std::set<std::string>& ans) {
  for (int i = len - 1; i > pos; i--) {
    ch[i] = targ;
    ans.insert(std::string(ch));
    for (int j = len - 1; j > i; j--) {
      dfs(ch, targ, i, len, ans);
      dfs(ch, targ + 1, i, len, ans);
    }
    ch[i] = 'a';
  }
}
static void exec() {
  int N;
  get(N);
  char ch[11] = "aaaaaaaaaa";
  ch[N] = 0;
  printf("%s\n", ch);
  std::set<std::string> ans;
  dfs(ch, 'b', 0, N, ans);
  for (auto it = ans.begin(); it != ans.end(); it++) {
    printf("%s\n", it->c_str());
  }
}
