//#include <bits/stdc++.h>
#include<iostream>
#include<cstdlib>
#include<memory.h>
#include<cstdio>
using namespace std;
int nex[100050],m;
int a[1000050],b[100050];
void creat()
{
// cout<<"!";
memset(nex,0,sizeof(nex));
nex[0]=-1;
int j;
for(int i=1;i<m;i++)
{
j=nex[i-1];
while(b[j+1]!=b[i]&&j>=0)j=nex[j];
if(b[j+1]!=b[i])nex[i]=-1;
else nex[i]=j+1;
}//cout<<m;
for(int i=0;i<m;i++){nex[i]++;}
}
int main()
{
int n,k;
cin>>k;
while(k--)
{
memset(b,0,sizeof(b));memset(a,0,sizeof(a));
cin>>n>>m;
for(int p=0;p<n;p++)scanf("%d",&a[p]);
for(int p=0;p<m;p++)scanf("%d",&b[p]);
creat();
int pos=0,i=0,j=0,coun=0;
while(i<n)
{
// cout<<i<<" "<<j<<endl;
if(a[i]!=b[j])
{
if(j!=0)
{
j=nex[j-1];
}
else
{
i++;
}
}
else
{
i++;j++;
}
if(j==m){coun++;pos=i;break;}
}
pos-=m;
pos++;
if(coun)
cout<<pos<<endl;
else cout<<-1<<endl;
}
return 0;
}
直接套一下就能过
//cin会t