K - サーキュレーション Editorial /

Time Limit: 2.5 sec / Memory Limit: 1024 MB

配点: 100

問題文

長さ N01 からなる文字列 S, T が与えられます。

以下の操作を考えます。

  • 1 \leq x \leq N となる整数 x を選び、文字列 S = S_1\ldots S_NS_1\ldots S_xS_{x+1}\ldots S_N に分け、それぞれ巡回右シフトをしてくっつける

ただし、文字列 U = U_1\ldots U_M の巡回右シフトとは U_1\ldots U_{M-1}U_MU_MU_1\ldots U_{M-1} に変更することを意味します。また、x=N の時は文字列 S 全体を巡回右シフトします。 例えば、文字列 S=01001 に対して x=3 として操作を行うと、文字列はまず 01001 にわけられ、それぞれを巡回右シフトすると 00110 になるため、操作の結果として得られる文字列は 00110 となります。

この操作を文字列 S に対して任意回数行うことで、文字列 T と一致させることが出来るか判定してください。 出来ない場合は MuriyarokonnNaN を 1 行に出力、 出来る場合は最小の操作回数を 1 行に出力してください。

制約

  • N1 \leq N \leq 10^{5} を満たす整数
  • ST01 からなる文字列
  • \lvert S \rvert = \lvert T \rvert = N
  • S に含まれる 0 の数と T に含まれる 0 の数は等しい
  • S に含まれる 1 の数と T に含まれる 1 の数は等しい

入力

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

N
S
T

出力

文字列 S に対して操作を任意回数行うことで文字列 T と一致させることが出来る場合は最小の操作回数を、出来ない場合は MuriyarokonnNaN を、それぞれ 1 行に出力せよ。


入力例 1

6
010101
010110

出力例 1

3

以下のような順番で操作を行うことで、文字列 S を文字列 T に一致させることが出来ます。

  • x=1 として操作を行う
  • x=5 として操作を行う
  • x=6 として操作を行う

この時、文字列 S は操作によって 010101 \to 011010 \to 101100 \to 010110 と変化します。


入力例 2

18
111101101001101001
111101101001101001

出力例 2

0

操作をしなくてもすでに一致しています。


入力例 3

18
011110100101000100
000110010011100110

出力例 3

8