# 文字列の辞書順列挙
# 実行方法: python3 strings.py 文字種類数 文字列最大長
# 実行例:   python3 strings.py 2 3

def strings(cs, n, s):
    """文字列を辞書順で再帰的に列挙"""
    if n == 0: return [s]
    else:      return [s] + [x for c in cs for x in strings(cs, n-1, s+c)]

if __name__ == "__main__":

    from sys import argv
    from string import ascii_lowercase

    max_size = len(ascii_lowercase)
    try:
        size, length = int(argv[1]), int(argv[2])
        if size < 0 or size > max_size or length < 0: raise Exception
    except Exception:
        exit(1)

    characters = ascii_lowercase[:size]
    for s in strings(characters, length, ""): print(s)