#include <bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int (i)=0;(i)<(n);(i)++)
#define repp(i,m,n) for(int (i)=(m);(i)<(n);(i)++)
#define repm(i,n) for(int (i)=(n-1);(i)>=0;(i)--)
#define INF (1ll<<60)
#define all(x) (x).begin(),(x).end()
typedef long long lint;
const lint MOD =1000000007;
const lint MAX = 10000000;
using Graph =vector<vector<lint>>;
typedef pair<lint,lint> P;
 
 
lint fac[MAX], finv[MAX], inv[MAX];
 
void COMinit() 
{
    fac[0] = fac[1] = 1;
    finv[0] = finv[1] = 1;
    inv[1] = 1;
    for (lint i = 2; i < MAX; i++)
    {
        fac[i] = fac[i - 1] * i % MOD;
        inv[i] = MOD - inv[MOD % i] * (MOD / i) % MOD;
        finv[i] = finv[i - 1] * inv[i] % MOD;
    }
}
 
long long COM(lint n, lint k)
{
    if (n < k)
        return 0;
    if (n < 0 || k < 0)
        return 0;
    return fac[n] * (finv[k] * finv[n - k] % MOD) % MOD;
}
 
lint primary(lint num)
{
    if (num < 2) return 0;
    else if (num == 2) return 1;
    else if (num % 2 == 0) return 0;
 
    double sqrtNum = sqrt(num);
    for (int i = 3; i <= sqrtNum; i += 2)
    {
        if (num % i == 0)
        {
            return 0;
        }
    }
 
    return 1;
}
   long long modpow(long long a, long long n, long long mod) {
    long long res = 1;
    while (n > 0) {
        if (n & 1) res = res * a % mod;
        a = a * a % mod;
        n >>= 1;
    }
    return res;
}
    lint lcm(lint a,lint b){
        return a/__gcd(a,b)*b;
    }

        
  int main(){
     lint n;
     cin>>n;
     vector<string> k;
     rep(i,1<<n){
         bool x[15];
         char c[15];
         fill(x,x+15,false);
         lint count=0;
         lint s=0;
         lint s1=0;
         bool ist=false;
         rep(j,n){
             if(i&(1<<j)){
                 count++;
                 x[j]=true;
             }
         }
            if(count==1||(n-count)==1)continue;
            else{
                rep(i,n){
                    if(!x[i]){
                       c[i]='a'+s;
                        s++;
                        
                    }else{
                        if(!ist){
                            ist=true;
                        if(s!=0) s1=s;
                            s++;
                        }
                        c[i]='a'+s1;
                    }
                }
            } 
            string q;
            rep(i,n){
                if(i==0)q=c[i];
                else q+=c[i];
            }
            k.push_back(q);
         }
         sort(all(k));
         rep(i,k.size())cout<<k[i]<<endl;
         if(n==1)cout<<'a';
     }
  

  
     
  