AT_panasonic2020_d String Equivalence
Description
[problemUrl]: https://atcoder.jp/contests/panasonic2020/tasks/panasonic2020_d
この問題では、英小文字からなる文字列のみを考えます。
文字列 $ s,\ t $ は以下の条件を満たすとき **同型** であるといいます。
- $ |s|\ =\ |t| $ である。
- 任意の $ i,\ j $ に対し次のいずれかが成立する。
- $ s_i\ =\ s_j $ かつ $ t_i\ =\ t_j $
- $ s_i\ \neq\ s_j $ かつ $ t_i\ \neq\ t_j $
たとえば、`abcac` と `zyxzx` は同型ですが、`abcac` と `ppppp` は同型ではありません。
文字列 $ s $ は以下の条件を満たすとき **標準形** であるといいます。
- 任意の $ s $ と同型な文字列 $ t $ に対し、$ s\ \leq\ t $ が成立する。ただしここで $ \leq $ は辞書順での比較を表す。
たとえば、`abcac` は標準形ですが、`zyxzx` はそれより辞書順で小さい `abcac` と同型のため標準形ではありません。
整数 $ N $ が与えられます。 長さ $ N $ の標準形の文字列を全て、辞書順で昇順で出力してください。
Input Format
入力は以下の形式で標準入力から与えられる。
> $ N $
Output Format
長さ $ N $ の標準形の文字列が $ K $ 個あり、辞書順で $ w_1,\ \ldots,\ w_K $ であるとする。 このとき以下の形式で出力せよ。
> $ w_1 $ $ : $ $ w_K $
Explanation/Hint
### 制約
- $ 1\ \leq\ N\ \leq\ 10 $
- 入力は全て整数である。