atcoder#ABC135F. [ABC135F] Strings of Eternity

[ABC135F] Strings of Eternity

配点 : 600600

問題文

英小文字からなる二つの文字列 s,ts, t が与えられます。次の条件を満たす非負整数 ii の個数が有限であるか判定し、有限である場合はそのような ii の最大値を求めてください。

  • ある非負整数 jj が存在し、ttii 個連結して得られる文字列は、ssjj 個連結して得られる文字列の部分文字列である。

注記

  • 文字列 aa が文字列 bb の部分文字列であるとは、ある整数 xx (0xba)(0 \leq x \leq |b| - |a|) が存在して任意の整数 yy (1ya)(1 \leq y \leq |a|) に対して ay=bx+ya_y = b_{x+y} であることです。
  • 任意の文字列に対し、それを 00 個連結して得られる文字列は空文字列であるとします。また、上記の定義より、空文字列は任意の文字列の部分文字列です。したがって、任意の二つの文字列 s,ts, t に対して i=0i = 0 は問題文中の条件を満たします。

制約

  • 1s5×1051 \leq |s| \leq 5 \times 10^5
  • 1t5×1051 \leq |t| \leq 5 \times 10^5
  • s,ts, t は英小文字からなる。

入力

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

ss

tt

出力

条件を満たす非負整数 ii の個数が有限である場合はそのような ii の最大値を、無限である場合は -1 を出力せよ。

abcabab
ab
3

tt33 個連結して得られる文字列 ababab は、ss22 個連結して得られる文字列 abcabababcabab の部分文字列であるため、i=3i = 3 は条件を満たします。

一方で、tt44 個連結して得られる文字列 abababab は、ss を何個連結しても部分文字列として現れないため、i=4i = 4 は条件を満たしません。

同様に、55 以上の任意の整数も条件を満たしません。よって条件を満たす非負整数 ii の個数は有限で、その最大値は 33 です。

aa
aaaaaaa
-1

任意の非負整数 ii に対し、ttii 個連結して得られる文字列は、ss4i4i 個連結して得られる文字列の部分文字列です。したがって条件を満たす非負整数 ii は無限に存在します。

aba
baaab
0

注記で述べたように、i=0i = 0 は必ず条件を満たします。