Problem:
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.

Solution in C++ (GCC 9.2.1) (judge verdict: Wrong Answer)

/*input

*/
#include <bits/stdc++.h>
#define up(i,a,b) for(int (i) = (a);(i)<=(b);++(i))
#define down(i,b,a) for(int (i) = (b);i>=(a);--i)
#define debug(x) cerr << (x) << '\n';
#define bits(x,i) ((x >> i) & 1)
#define mid ((l+r)/2)
#define pr pair<int,int>
using namespace std;
const int N = 1500005;
int p[N];
int nxt[500005];
int ans[500005];
int ok[500005];
string s, t;
void KMP(){
	bool isOk = false;
	int n = s.size();
	int t_size = t.size();
	while ((int)s.size() < (int)t.size()) isOk = true, s = s + s; 
	if (!isOk) s = s + s;
	s = t + "#" + s;
	// cout << s << '\n';
	for(int i=1;i<s.size();++i){
		int j = p[i-1];
		while (j && s[i] != s[j]) j = p[j-1];
		if (s[i] == s[j]) j++;
		p[i] = j;
	}
	memset(nxt, -1, sizeof(nxt));
	for(int i= (int)s.size() - n;i<(int)s.size();++i){
		// cout << p[i] << ' ';
		if (p[i] == t_size) nxt[(i - t_size + 1) % n] = (i + 1) % n;
	}
	// for(int i=0;i<n;++i) cout << nxt[i] << '\n';
	int res = 0, cnt = 0;
	bool cycle = 0;
	for(int i=0;i<n;++i){
		if (!ok[i] && nxt[i] != -1){
			int j = i;
			ok[j] = ++cnt;
			ans[cnt] = 0;
			while (nxt[j] != -1){
				j = nxt[j];
				ans[cnt]++;
				if (ok[j]) { 
					if (ok[j] == cnt || ans[ok[j]] == -1) {
						ans[cnt] = -1; 
						cycle = 1;
					}
					else ans[cnt] += ans[ok[j]];
					break; 
				}
				ok[j] = cnt;
			}
			res = max(res, ans[cnt]);
		}
	}
	// for(int i=0;i<n;++i) cout << ok[i] << ' ';
	cout << (!cycle ? res : -1);
}
int main(){
	ios_base::sync_with_stdio(0); cin.tie(0);
	cin >> s >> t;
	KMP();
}