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: Time Limit Exceeded)

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<ll, ll> P;
#define DUMP(x) cout << #x << " = " << (x) << endl;
#define FOR(i, m, n) for (ll i = m; i < n; i++)
#define IFOR(i, m, n) for (ll i = n - 1; i >= m; i--)
#define REP(i, n) FOR(i, 0, n)
#define IREP(i, n) IFOR(i, 0, n)
#define FOREACH(x, a) for (auto&(x) : (a))
#define ALL(v) (v).begin(), (v).end()
#define SZ(x) ll(x.size())

vector<ll> Zalgo(const string& S) {
  ll N = SZ(S);
  vector<ll> res(N);
  res[0] = N;
  ll i = 1, j = 0;
  while (i < N) {
    while (i + j < N && S[j] == S[i + j]) ++j;
    res[i] = j;
    if (j == 0) {
      ++i;
      continue;
    }
    ll k = 1;
    while (i + k < N && k + res[k] < j) res[i + k] = res[k], ++k;
    i += k, j -= k;
  }
  return res;
}

int main() {
  string s, t;
  cin >> s >> t;
  ll m = SZ(s), n = SZ(t);
  string u = s;
  while (SZ(u) <= m + n - 1) {
    u = u + s;
  }
  u = t + u;
  auto lcp = Zalgo(u);
  vector<vector<ll>> to(m);
  vector<ll> deg(m, 0);
  REP(i, m) {
    if (lcp[i + n] >= n) {
      ll j = (i + n) % m;
      to[i].push_back(j);
      deg[j]++;
    }
  }
  stack<ll> st;
  REP(i, m) if (deg[i] == 0) st.push(i);
  // dp[i] = 頂点iを始点とするパス長の最大値
  vector<ll> topo, dp(m, 0);
  while (!st.empty()) {
    ll cv = st.top();
    st.pop();
    topo.push_back(cv);
    FOREACH(nv, to[cv]) {
      deg[nv]--;
      dp[nv] = max(dp[nv], dp[cv] + 1);
      if (deg[nv] == 0) st.push(nv);
    }
  }

  //トポロジカルソート列に全頂点が格納されていない場合，閉路がある
  if (SZ(topo) != m) {
    cout << -1 << endl;
    return 0;
  }
  cout << *max_element(ALL(dp)) << endl;
  return 0;
}