#include <iostream>
#include <cstdio>
#include <string>

using namespace std;

int next(string str1,int k)
{
    int i=0;
    int j=1;
    int n=0;
    while(j<k)
    {
        if(str1[i]==str1[j])
        {
            ++n;
            ++i;
            ++j;

        }
        else
        {
            ++j;
            i=0;
            n=0;

        }
    }
    if(k==0){//这个强制定义的也一定要加上,一定不能落条件
        return -1;
    }else{
        return n;
    }
}

int main()
{

    int fre;
    string str1;
    string str2;

    scanf("%d",&fre);
    for(int i=0; i<fre; ++i)
    {
//         getline(cin,str1);
//         getline(cin,str2);
        cin>>str1>>str2;

        int m=str1.size();
        int n=str2.size();

        int j=0;
        int k=0;
        int p=0;

        while(k<n)//这个用while,不用for
        {
            if(str1[j]==str2[k])//相等就一次往后加
            {
                ++j;
                ++k;
            }
            else//不相等,让k跳到数组哪里,j先不动
            {
                j=next(str1,j);
//                 k=next[k];
                if(j==-1)//如果在模式串第一个字母就不对,那么两个都往后+1,这个时候,k=0,正好+1,变成了1
                {
                    ++j;
                    ++k;
                }
            }
            if(j==m&&str1[j-1]==str2[k-1]) //你就要想好,匹配上的条件是什么!
        {
                ++p;
//             printf("%d\n",k-m);//这种最难确定了,一会再改
        }
        }
//         for(int i=1;i<=n;++i){
//             printf("%d ",next(b,i));
//         }
//         printf("\n");
        //成功出来之后,k=n+1,并且a[j-1]==b[k-1]
//         if(j==m&&str1[j-1]==str2[k-1]) //你就要想好,匹配上的条件是什么!
//         {
//             printf("%d\n",k-m);//这种最难确定了,一会再改
//         }
//         else
//         {
//             printf("%d\n",j);
//             printf("%d\n",n);
            printf("%d\n",p);
//         }
    }
}