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++14 (GCC 5.4.1) (judge verdict: Wrong Answer)

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cctype>
#include <cmath>
#include <string>
#include <vector>
#include <set>
#include <map>
#include <queue>
#include <algorithm>
#include <utility>
#include <deque>
#include <stack>
#include <bitset>
#include <ctime>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
typedef pair<int,ll> pil;
typedef pair<ll,int> pli;
#define rep(i,n) for (int i=0;i<n;++i)
#define REP(i,n) for (int i=1;i<=n;++i)
#define all(x) x.begin(),x.end()
#define mp make_pair
#define pb push_back
#define pf push_front
#define F first
#define S second
#define read(x) scanf("%d",&x)
string S,T;
string S2,S3;
const ll MOD=1e9+7;
const ll H=211;
int maxMatch[3000005];
ll Hpow[3000005];
int Tsize;
int main(){
	ios::sync_with_stdio(false);
	cin>>S>>T;Tsize=T.size();
	Hpow[0]=1;
	for (int i=1;i<3000005;++i) Hpow[i]=Hpow[i-1]*H%MOD;
	while(S2.size()<=Tsize) S2+=S;
	// max len of S=1e6
	S3=S2;S2+=S2;S3+=S2;
	ll hashT=0;
	for (int i=0;i<Tsize;++i){
		hashT+=T[i];hashT*=H;hashT%=MOD;
	}
	ll hashS=0;
	for (int i=0;i<Tsize;++i){
		hashS+=S2[i];hashS*=H;hashS%=MOD;
	}
	if (hashS==hashT) maxMatch[Tsize-1]=1;// end pos
	int ans2=maxMatch[Tsize-1];
	for (int i=Tsize;i<S2.size();++i){
		hashS-=S2[i-Tsize]*Hpow[Tsize]%MOD;
		hashS+=S2[i];
		if (hashS<0) hashS+=MOD;
		hashS*=H;
		hashS%=MOD;
		if (hashS==hashT) maxMatch[i]=maxMatch[i-Tsize]+1;
		ans2=max(ans2,maxMatch[i]);
	}
	int ans3=ans2;
	for (int i=S2.size();i<S3.size();++i){
		hashS-=S3[i-Tsize]*Hpow[Tsize]%MOD;
		hashS+=S3[i];
		if (hashS<0) hashS+=MOD;
		hashS*=H;
		hashS%=MOD;
		if (hashS==hashT) maxMatch[i]=maxMatch[i-Tsize]+1;
		ans3=max(ans3,maxMatch[i]);
	}
	if (ans3!=ans2) cout<<-1<<endl;
	else cout<<ans2<<endl;
	return 0; 
}