#PANASONIC2020D. String Equivalence

String Equivalence

配点 : 400400

問題文

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

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

  • s=t|s| = |t| である。
  • 任意の i,ji, j に対し次のいずれかが成立する。- si=sjs_i = s_j かつ ti=tjt_i = t_j
    • sisjs_i \neq s_j かつ titjt_i \neq t_j
  • si=sjs_i = s_j かつ ti=tjt_i = t_j
  • sisjs_i \neq s_j かつ titjt_i \neq t_j

たとえば、abcaczyxzx は同型ですが、abcacppppp は同型ではありません。

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

  • 任意の ss と同型な文字列 tt に対し、sts \leq t が成立する。ただしここで \leq は辞書順での比較を表す。

たとえば、abcac は標準形ですが、zyxzx はそれより辞書順で小さい abcac と同型のため標準形ではありません。

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

制約

  • 1N101 \leq N \leq 10
  • 入力は全て整数である。

入力

入力は以下の形式で標準入力から与えられる。

NN

出力

長さ NN の標準形の文字列が KK 個あり、辞書順で w1,,wKw_1, \ldots, w_K であるとする。 このとき以下の形式で出力せよ。

w1w_1

::

wKw_K

1
a
2
aa
ab