可重复
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+10;
char a[maxn],b[maxn];
int nex[maxn];
int n,m;
void pre(){
nex[1]=0;
int i,j=0;
for(i=1;i<m;i++){
while(j>0&&b[i+1]!=b[j+1])
j=nex[j];
if(b[i+1]==b[j+1]) j++;
nex[i+1]=j;
}
}
int kmp(){
int ans=0,i,j=0;
for(i=0;i<n;i++){
while(j>0&&a[i+1]!=b[j+1])
j=nex[j];
if(a[i+1]==b[j+1]) j++;
if(j==m){
j=nex[j];
ans++;
}
}
return ans;
}
int main(){
int i,t,len,l,ans;
cin>>t;
while(t--){
scanf("%s",b+1);
scanf("%s",a+1);
n=strlen(a+1);
m=strlen(b+1);
pre();
printf("%d\n",kmp());
}
}