/* C# template********************************
20.08.08 パナソニックプログラミングコンテスト2020. D - String Equivalence

問題文
この問題では、英小文字からなる文字列のみを考えます。

文字列 s,t は以下の条件を満たすとき 同型 であるといいます。

|s|=|t| である。任意の i,j に対し次のいずれかが成立する。si=sj かつ 
ti=tjsi≠sj かつ ti≠tjたとえば、abcac と zyxzx は同型ですが、abcac と ppppp は同型ではありません。

文字列 s は以下の条件を満たすとき 標準形 であるといいます。

任意の s と同型な文字列 t に対し、s≤t が成立する。ただしここで ≤ は辞書順での比較を表す。
たとえば、abcac は標準形ですが、zyxzx はそれより辞書順で小さい　abcac と同型のため標準形ではありません。

整数 N が与えられます。 長さ N の標準形の文字列を全て、辞書順で昇順で出力してください。

N = 1 to 10


a
aa
ab
aaa
aab
aba
abb
abc ...
와 같이 출력.

*********************************************/

namespace temp_name {
    using System;
    using System.Linq;
    using System.Collections.Generic;
    using static System.Console; 
    using static IOmacro.CsharpInput; 
    using static IOmacro.CppInput;

    public class Run {
        
        int strLenPrim;
        
        
        public void solve(string strNow, char max) {
            // WriteLine($"{strNow}      {max}");
            if (strNow.Length == strLenPrim) {
                WriteLine(strNow);
                
            } else {
                for (char next = 'a'; next <= max + 1; next++) {
                    if (next == max + 1) {
                        solve(strNow + next, (char)(max + 1));
                    } else {
                        solve(strNow + next, max);
                    }
                }
            }
        }
        
        public void proc() {
            strLenPrim = cin;
            
            solve("", Convert.ToChar('a' - 1));
        }
    }
}

class program {
    static void Main(string[] args) {
        // var exStdIn = new System.IO.StreamReader(@"C:\Users\HAN\Desktop\VSC\input.txt"); System.Console.SetIn(exStdIn);
        var _writer = new System.IO.StreamWriter(System.Console.OpenStandardOutput()) {AutoFlush = false};
        var run = new temp_name.Run(); System.Console.SetOut(_writer); run.proc(); System.Console.Out.Flush();
    }
}

namespace IOmacro {
    //20.08.10 수정

    using System;
    using System.Linq;
    using System.IO;
    using System.Collections.Generic;

    public class CsharpInput {
        private const char separator = ' ';
        public static string _string {get{return Console.ReadLine();}} public static string[] _stringa {get{return (Console.ReadLine().Split(separator));}}
        public static int _int {get{return int.Parse(Console.ReadLine());}} public static int[] _inta {get{return Console.ReadLine().Split(separator).Select(int.Parse).ToArray();}}
        public static long _long {get{return long.Parse(Console.ReadLine());}} public static long[] _longa {get{return Console.ReadLine().Split(separator).Select(long.Parse).ToArray();}}
        public static double _double {get{return double.Parse(Console.ReadLine());}} public static double[] _doublea {get{return Console.ReadLine().Split(separator).Select(double.Parse).ToArray();}}
    }

    public class CppInput {
        public static CppInput cin => new CppInput(); private CppInput() {}
        private const char separator = ' ';
        private static readonly Queue<string> ___input = new Queue<string>();
        public static implicit operator string(CppInput _) {if (___input.Count == 0) Console.ReadLine().Split(separator).foreachExtension(x => ___input.Enqueue(x)); return ___input.Dequeue();}
        public static implicit operator int(CppInput _) {if (___input.Count == 0) Console.ReadLine().Split(separator).foreachExtension(x => ___input.Enqueue(x)); return int.Parse(___input.Dequeue());}
        public static implicit operator long(CppInput _) {if (___input.Count == 0) Console.ReadLine().Split(separator).foreachExtension(x => ___input.Enqueue(x)); return long.Parse(___input.Dequeue());}
        public static implicit operator double(CppInput _) {if (___input.Count == 0) Console.ReadLine().Split(separator).foreachExtension(x => ___input.Enqueue(x)); return double.Parse(___input.Dequeue());}
    }

    public static class CEnumerableExtension {
        public delegate void Function<in T>(T val);
        public static void foreachExtension<T>(this IEnumerable<T> enumerable, Function<T> function) {
            foreach (var x in enumerable) function(x);
        }
    }
}



Measured memory_bytes: 37436