// Sakhiya07 - Yagnik Sakhiya
 
#include <bits/stdc++.h>
using namespace std;
 
#define ll long long int
#define ld long double
#define ff first
#define ss second
#define pb push_back
#define mp make_pair

#define bp __builtin_popcountll
#define MOD  1000000007
#define FAST ios_base::sync_with_stdio(false), cin.tie(0), cout.tie(0);srand(time(NULL));
const int N = 200005;

#include <ext/pb_ds/assoc_container.hpp> 
#include <ext/pb_ds/tree_policy.hpp> 
using namespace __gnu_pbds; 
#define ordered_set tree<ll, null_type,less<ll>, rb_tree_tag,tree_order_statistics_node_update>

void solve()
{
	ll n;
	cin >> n;
	set<string> s;
	for(ll i=0;i<(1<<n);i++)
	{
		ll cnt = bp(i);
		if(cnt==1)   continue;
		char crt = 'b';
		string t = "";
		if(cnt==0)  crt--;
        for(ll j=0;j<n;j++)
        {
        	if(i & (1<<j))
        	{
        		t += 'a';
        	}
        	else
        	{
        		t += crt;
        		crt++;
        	}
        }
        s.insert(t);
	}
	for(auto X:s)  cout<<X<<"\n";
}
 
int main()
{
    FAST;
    ll t = 1;
   // cin >> t;
    while(t--)
    {
    	solve();
    }
}