#include <bits/stdc++.h>
using namespace std;
template <class T>
using vc = vector<T>;
template <class T>
using vvc = vc<vc<T>>;
template <class T>
void mkuni(vector<T> &v) {
  sort(v.begin(), v.end());
  v.erase(unique(v.begin(), v.end()), v.end());
}
long long rand_int(long long l, long long r) {
  static mt19937_64 gen(chrono::steady_clock::now().time_since_epoch().count());
  return uniform_int_distribution<long long>(l, r)(gen);
}
template <class T>
void print(T x, int suc = 1) {
  cout << x;
  if (suc == 1)
    cout << '\n';
  else
    cout << ' ';
}
template <class T>
void print(const vector<T> &v, int suc = 1) {
  for (int i = 0; i < v.size(); i++)
    print(v[i], i == (int)(v.size()) - 1 ? suc : 2);
}
int main() {
  int n;
  cin >> n;
  vc<string> ans;
  ans.push_back("a");
  for (int i = 1; i < n; i++) {
    vc<string> nxt;
    for (auto &u : ans) {
      nxt.push_back(u + u.back());
      nxt.push_back(u + char((int)u.back() + 1));
    }
    ans = nxt;
  }
  sort(ans.begin(), ans.end());
  for (auto u : ans) cout << u << '\n';
}
