classSolution{public:typedefunsignedlonglong ull;
ull P =131;
string s;
ull h[40010], p[40010];
ull get(int l,int r){return h[r]- h[l -1]* p[r - l +1];}intrepeatedStringMatch(string a, string b){
string s;int res =0;int n = a.size(), m = b.size();while(s.size()< b.size()){
s.append(a);
res ++;}
s.append(a);
s.append(b);int len = s.size();
cout << len;
p[0]=1;for(int i =1; i <= len; i ++){
h[i]= h[i -1]* P + s[i -1];
p[i]= p[i -1]* P;}int index =-1;
ull target =get(len - m +1, len);for(int i =1; i + m -1<= len - m; i ++){if(target ==get(i, i + m -1)){
index = i;break;}}if(index ==-1)return-1;return index <= len - m - n - m +1? res : res +1;}};