/*
题意:给两个字符串a,s,判断a在s里出现的个数
*/
#include <stdio.h>
#include <string.h>
int next[10005];
char a[10005];
char s[1000005];
int n,len_a,len_s;
void Get_Next()
{
a[0] = '#';//因为是a+1,如果a[0]不存在,那strlen(a) = 0 ; !!!!!!!!!!!
len_a = strlen(a);
len_s = strlen(s);
next[1] = 0;
int j = 0;
for(int i=2;i<=len_a;i++)
{
while(j > 0 && a[j+1] != a[i])// j+1要理解,j因为要连续向前找next[j],而不是j+1
j = next[j];
if(a[j+1] == a[i])
j++;
next[i] = j;
}
}
int Str_Match()
{//跟Get_Next类似,理解后可手写!
int j = 0;
int num = 0;
for(int i=0;i<len_s;i++)
{
while(j>0 && a[j+1]!=s[i])
j = next[j];
if(a[j+1] == s[i])
j++;
if(j == len_a - 1){
j=next[j];
num++;
}
}
return num;
}
int main()
{
scanf("%d",&n);
while(n--)
{
getchar();
scanf("%s %s",a+1,s);//!!!!这用的是a+1,为的是字符串位置跟实际位置相对应,函数好写一点
Get_Next();
printf("%d\n",Str_Match());
}
return 0;
}