#include <bits/stdc++.h>
using namespace std;
const int64_t INF = (1LL << 60);
const long double pi = acosl((long double)1);
const int64_t mod = 1000000007;
const int dx[4] = {0, 1, 0, -1};
const int dy[4] = {1, 0, -1, 0};
const int ddx[8] = {1, 0, -1, -1, -1, 0, 1, 1};
const int ddy[8] = {1, 1, 1, 0, -1, -1, -1, 0};
bool f(string s, string t) {
  for (int64_t i = 0; i < (int64_t)(s.size()); i++)
    for (int64_t j = 0; j < (int64_t)(s.size()); j++) {
      if (!((s[i] == s[j] and t[j] == t[i]) or (s[i] != s[j] and t[j] != t[i])))
        return false;
    }
  return true;
}
void f(string s, int64_t n, int64_t N) {
  if (n == N)
    cout << s << endl;
  else
    for (int64_t i = 0; i < (int64_t)((s.back() - 'a') + 2); i++) {
      s.push_back('a' + i);
      f(s, n + 1, N);
      s.pop_back();
    }
}
bool solve() {
  vector<string> a;
  int64_t n;
  cin >> n;
  if (n != 4) return true;
  for (int64_t i = 0; i < (int64_t)(26); i++)
    for (int64_t j = 0; j < (int64_t)(26); j++)
      for (int64_t k = 0; k < (int64_t)(26); k++)
        for (int64_t l = 0; l < (int64_t)(26); l++) {
          string s;
          s.push_back('a' + i);
          s.push_back('a' + j);
          s.push_back('a' + k);
          s.push_back('a' + l);
          bool isOK = true;
          for (auto&& t : a) {
            if (f(s, t)) isOK = false;
          }
          if (isOK) a.push_back(s);
        }
  for (auto&& t : a) cout << t << endl;
  return false;
}
signed main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
  cout << fixed;
  cout << setprecision(30);
  return solve();
}
