AT_abc313_e [ABC313E] Duplicate
Description
[problemUrl]: https://atcoder.jp/contests/abc313/tasks/abc313_e
`1` から `9` までの数字からなる文字列 $ S $ に対して、 $ f(S) $ を次の手順によって得られる文字列 $ T $ とします。($ S_i $ は $ S $ の $ i $ 番目の文字を意味します)
- 文字列 $ T $ がある。はじめ、$ T $ は空文字列である。
- $ i=1,\ 2,\ \dots,\ |S|\ -\ 1 $ の順に次の操作を行う。
- $ S_{i+1} $ を整数として解釈したときの値を $ n $ とする。$ T $ の末尾に $ S_i $ を $ n $ 個追加する。
例えば $ S\ = $ `313` のとき、以下の手順によって $ f(S)\ = $ `3111` に決まります。
- はじめ $ T $ は空文字列である。
- $ i=1 $ のとき $ n\ =\ 1 $ である。$ T $ に `3` を $ 1 $ 個追加する。$ T $ は `3` になる。
- $ i=2 $ のとき $ n\ =\ 3 $ である。$ T $ に `1` を $ 3 $ 個追加する。$ T $ は `3111` になる。
- 操作を終了する。$ T $ として `3111` を得る。
`1` から `9` までの数字からなる長さ $ N $ の文字列 $ S $ が与えられます。
あなたは「$ S $ を $ f(S) $ に置き換える」という操作を $ S $ の長さが $ 1 $ になるまで繰り返します。
操作が終了するまでに行う操作を行う回数を $ 998244353 $ で割った余りを求めてください。ただし、操作が無限に続く場合は `-1` を出力してください。
Input Format
入力は以下の形式で標準入力から与えられる。
> $ N $ $ S $
Output Format
操作が終了するまでに行う操作を行う回数を $ 998244353 $ で割った余りを出力せよ。ただし、操作が無限に続く場合は `-1` を出力せよ。
Explanation/Hint
### 制約
- $ 2\ \leq\ N\ \leq\ 10^6 $
- $ S $ は `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9` からなる長さ $ N $ の文字列
### Sample Explanation 1
$ S\ = $ `313` の場合、操作を $ 4 $ 回行うと $ S $ の長さが $ 1 $ になります。
- $ f(S)\ = $ `3111` である。$ S $ を `3111` に置き換える。
- $ f(S)\ = $ `311` である。$ S $ を `311` に置き換える。
- $ f(S)\ = $ `31` である。$ S $ を `31` に置き換える。
- $ f(S)\ = $ `3` である。$ S $ を `3` に置き換える。
- $ S $ の長さが $ 1 $ になったので操作を終了する。
### Sample Explanation 2
$ S\ = $ `123456789` の場合、操作が無限に続きます。この場合は `-1` を出力してください。