

Time Limit: 2 sec / Memory Limit: 1024 MB
配点 : 600 点
問題文
英小文字からなる二つの文字列 s, t が与えられます。次の条件を満たす非負整数 i の個数が有限であるか判定し、有限である場合はそのような i の最大値を求めてください。
- ある非負整数 j が存在し、t を i 個連結して得られる文字列は、s を j 個連結して得られる文字列の部分文字列である。
注記
-
文字列 a が文字列 b の部分文字列であるとは、ある整数 x (0 \leq x \leq |b| - |a|) が存在して任意の整数 y (1 \leq y \leq |a|) に対して a_y = b_{x+y} であることです。
-
任意の文字列に対し、それを 0 個連結して得られる文字列は空文字列であるとします。また、上記の定義より、空文字列は任意の文字列の部分文字列です。したがって、任意の二つの文字列 s, t に対して i = 0 は問題文中の条件を満たします。
制約
- 1 \leq |s| \leq 5 \times 10^5
- 1 \leq |t| \leq 5 \times 10^5
- s, t は英小文字からなる。
入力
入力は以下の形式で標準入力から与えられる。
s t
出力
条件を満たす非負整数 i の個数が有限である場合はそのような i の最大値を、無限である場合は -1
を出力せよ。
入力例 1
abcabab ab
出力例 1
3
t を 3 個連結して得られる文字列 ababab
は、s を 2 個連結して得られる文字列 abcabababcabab
の部分文字列であるため、i = 3 は条件を満たします。
一方で、t を 4 個連結して得られる文字列 abababab
は、s を何個連結しても部分文字列として現れないため、i = 4 は条件を満たしません。
同様に、5 以上の任意の整数も条件を満たしません。よって条件を満たす非負整数 i の個数は有限で、その最大値は 3 です。
入力例 2
aa aaaaaaa
出力例 2
-1
任意の非負整数 i に対し、t を i 個連結して得られる文字列は、s を 4i 個連結して得られる文字列の部分文字列です。したがって条件を満たす非負整数 i は無限に存在します。
入力例 3
aba baaab
出力例 3
0
注記で述べたように、i = 0 は必ず条件を満たします。
Score : 600 points
Problem Statement
Given are two strings s and t consisting of lowercase English letters. Determine if the number of non-negative integers i satisfying the following condition is finite, and find the maximum value of such i if the number is finite.
- There exists a non-negative integer j such that the concatenation of i copies of t is a substring of the concatenation of j copies of s.
Notes
-
A string a is a substring of another string b if and only if there exists an integer x (0 \leq x \leq |b| - |a|) such that, for any y (1 \leq y \leq |a|), a_y = b_{x+y} holds.
-
We assume that the concatenation of zero copies of any string is the empty string. From the definition above, the empty string is a substring of any string. Thus, for any two strings s and t, i = 0 satisfies the condition in the problem statement.
Constraints
- 1 \leq |s| \leq 5 \times 10^5
- 1 \leq |t| \leq 5 \times 10^5
- s and t consist of lowercase English letters.
Input
Input is given from Standard Input in the following format:
s t
Output
If the number of non-negative integers i satisfying the following condition is finite, print the maximum value of such i; if the number is infinite, print -1
.
Sample Input 1
abcabab ab
Sample Output 1
3
The concatenation of three copies of t, ababab
, is a substring of the concatenation of two copies of s, abcabababcabab
, so i = 3 satisfies the condition.
On the other hand, the concatenation of four copies of t, abababab
, is not a substring of the concatenation of any number of copies of s, so i = 4 does not satisfy the condition.
Similarly, any integer greater than 4 does not satisfy the condition, either. Thus, the number of non-negative integers i satisfying the condition is finite, and the maximum value of such i is 3.
Sample Input 2
aa aaaaaaa
Sample Output 2
-1
For any non-negative integer i, the concatenation of i copies of t is a substring of the concatenation of 4i copies of s. Thus, there are infinitely many non-negative integers i that satisfy the condition.
Sample Input 3
aba baaab
Sample Output 3
0
As stated in Notes, i = 0 always satisfies the condition.