// 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>
set<string> s;
ll n;
void solve(string t)
{
	ll chk = 1;
	map<char,bool> y;
	ll tot = 0;
	vector<ll> v;
	for(ll i=0;i<n;i++)
	{
		if(t[i]=='#')  v.pb(i),tot++;
		y[t[i]] = 1;
	}	
	if(!tot)   
	{
		s.insert(t);
	}
	else
	{
        char small = 'a';
        while(y[small])  small++;
        string o;
        o = t;
        o[v[0]] = small;
        solve(o);
        for(ll i=1;i<(1<<tot);i++)
        {
        	string o = t;
            ll cnt = bp(i);
            if(cnt==1)   continue;
            for(ll j=0;j<tot;j++)
            {
            	if(i & (1<<j))
            	{
                     o[v[j]] = small;    
            	}
            }
            solve(o);
        }
	}
}
void solve()
{
    string t;
    cin >> n;
    for(ll i=0;i<n;i++)  t += '#';
    solve(t);
    for(auto X:s)   cout<<X<<"\n";
}
 
int main()
{
    FAST;
    ll t = 1;
   // cin >> t;
    while(t--)
    {
    	solve();
    }
}