#include <bits/stdc++.h>
using namespace std;
template <class T>
bool chmax(T &a, const T &b) {
  if (a < b) {
    a = b;
    return 1;
  }
  return 0;
}
template <class T>
bool chmin(T &a, const T &b) {
  if (a > b) {
    a = b;
    return 1;
  }
  return 0;
}
int main() {
  int n;
  cin >> n;
  vector<string> s(1);
  for (int i = int(0); i < int(n); ++i) {
    s[0] += 'a';
  }
  vector<string> ans;
  ans.push_back(s[0]);
  for (int i = int(0); i < int(n - 1); ++i) {
    vector<string> t;
    for (auto p : s) {
      vector<int> fine_idx;
      int lastidx = i + 1;
      for (int j = int(i + 1); j < int(p.size()); ++j) {
        if (p[j] == 'a' + i) {
          lastidx = j;
          break;
        }
      }
      for (int j = int(lastidx); j < int(p.size()); ++j) {
        if (p[j] == 'a') {
          fine_idx.push_back(j);
        }
      }
      for (int j = int(1); j < int((1 << fine_idx.size())); ++j) {
        string tmp = p;
        for (int k = int(0); k < int(fine_idx.size()); ++k) {
          if ((1 << k) & j) {
            tmp[fine_idx[k]] = char('a' + i + 1);
          }
        }
        t.push_back(tmp);
      }
    }
    ans.insert(ans.end(), (t).begin(), (t).end());
    s = t;
  }
  sort((ans).begin(), (ans).end());
  for (auto au : ans) {
    cout << au << endl;
  }
}
