#include <bits/stdc++.h>
using namespace std;
vector<char> alpha = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i',
                      'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r',
                      's', 't', 'u', 'v', 'w', 'x', 'y', 'z'};
void print(vector<int> &nums) {
  for (int i = 0; i < nums.size(); i++) {
    cout << alpha.at(nums.at(i));
  }
  cout << endl;
}
vector<vector<int>> branch(vector<vector<int>> &org) {
  vector<vector<int>> ans;
  int len = org.at(0).size();
  for (vector<int> arr : org) {
    int last = arr.at(len - 1);
    for (int i = 0; i <= last + 1; i++) {
      vector<int> n(arr.size() + 1);
      copy(arr.begin(), arr.end(), n.begin());
      n.at(len) = i;
      ans.push_back(n);
    }
  }
  return ans;
}
int main() {
  int N;
  cin >> N;
  vector<int> initial(1);
  vector<vector<int>> ans(1, initial);
  for (int i = 0; i < N; i++) {
    ans = branch(ans);
  }
  for (vector<int> a : ans) {
    print(a);
  }
  return 0;
}
