#include <bits/stdc++.h>
using namespace std;
template <class T> inline bool chmax(T &a, T b) {
    if(a < b) {
        a = b;
        return 1;
    }
    return 0;
}
template <class T> inline bool chmin(T &a, T b) {
    if(a > b) {
        a = b;
        return 1;
    }
    return 0;
}
typedef long long int ll;

#define ALL(v) (v).begin(), (v).end()
#define RALL(v) (v).rbegin(), (v).rend()
#define endl "\n"
const double EPS = 1e-7;
const int INF = 1 << 30;
const ll LLINF = 1LL << 60;
const double PI = acos(-1);
const int MOD = 1000000007;
const int dx[4] = {1, 0, -1, 0};
const int dy[4] = {0, 1, 0, -1};

//-------------------------------------

template <unsigned mod> struct RollingHash {
    vector<unsigned> hashed, power;

    inline unsigned mul(unsigned a, unsigned b) const {
        unsigned long long x = (unsigned long long)a * b;
        unsigned xh = (unsigned)(x >> 32), xl = (unsigned)x, d, m;
        asm("divl %4; \n\t" : "=a"(d), "=d"(m) : "d"(xh), "a"(xl), "r"(mod));
        return m;
    }

    RollingHash(const string &s, unsigned base = 10007) {
        int sz = (int)s.size();
        hashed.assign(sz + 1, 0);
        power.assign(sz + 1, 0);
        power[0] = 1;
        for(int i = 0; i < sz; i++) {
            power[i + 1] = mul(power[i], base);
            hashed[i + 1] = mul(hashed[i], base) + s[i];
            if(hashed[i + 1] >= mod)
                hashed[i + 1] -= mod;
        }
    }

    unsigned get(int l, int r) const {
        unsigned ret = hashed[r] + mod - mul(hashed[l], power[r - l]);
        if(ret >= mod)
            ret -= mod;
        return ret;
    }

    unsigned connect(unsigned h1, int h2, int h2len) const {
        unsigned ret = mul(h1, power[h2len]) + h2;
        if(ret >= mod)
            ret -= mod;
        return ret;
    }

    int LCP(const RollingHash<mod> &b, int l1, int r1, int l2, int r2) {
        int len = min(r1 - l1, r2 - l2);
        int low = -1, high = len + 1;
        while(high - low > 1) {
            int mid = (low + high) / 2;
            if(get(l1, l1 + mid) == b.get(l2, l2 + mid))
                low = mid;
            else
                high = mid;
        }
        return (low);
    }
};

using RH = RollingHash<1000000007>;

int main() {
    cin.tie(0);
    ios::sync_with_stdio(false);
    string s, t;
    cin >> s >> t;
    int ns = s.size();
    int nt = t.size();
    string c = s;
    while(c.size() < (ns + nt)) {
        c += s;
    }
    RH rhc(c), rht(t);
    vector<vector<int>> g(ns);
    vector<int> h(ns, 0);
    for(int i = 0; i < ns; i++) {
        if(rhc.get(i, i + nt) == rht.get(0, nt)) {
            int to = (i + nt) % ns;
            g[i].emplace_back(to);
            h[to]++;
        }
    }
    stack<int> st;
    for(int i = 0; i < ns; i++) {
        if(h[i] == 0) {
            st.push(i);
        }
    }
    vector<int> topo;
    while(st.size()) {
        int v = st.top();
        st.pop();
        topo.emplace_back(v);
        for(auto &u : g[v]) {
            h[u]--;
            if(h[u] == 0) {
                st.push(u);
            }
        }
    }
    if(topo.size() != ns) {
        cout << -1 << endl;
        return 0;
    }
    int ans = 0;
    vector<int> dp(ns, 0);
    for(int v : topo) {
        chmax(ans, dp[v]);
        for(int u : g[v]) {
            chmax(dp[u], dp[v] + 1);
        }
    }
    cout << ans << endl;
}

Measured memory_bytes: 47644