water kmp.
#include<iostream>
#include<stdio.h>
using namespace std;
int N[1000000],M[10000];
int nexts[10000];
int length1,length2;
void get_next()
{
int i,j;
i=0;j=-1;
nexts[0]=-1;
while((i+1)!=length2)
{
if(j==-1||M[j]==M[i])
{
j=j+1;
i=i+1;
nexts[i]=j;
}
else j=nexts[j];
}
}
int kmp()
{
int i,j;
i=0;j=0;
get_next();
while(i<length1)
{
if(N[i]==M[j])
{
i=i+1;
j=j+1;
if(j==length2)
{
return i-length2;
break;
}
}
else {
j=nexts[j];
if(j==-1)
{
i=i+1;
j=0;
}
}
}
return -1;
}
int main()
{
int t,i;
cin>>t;
while(t--)
{
cin>>length1>>length2;
for(i=0;i<length1;i++)
scanf("%d",&N[i]);
for(i=0;i<length2;i++)
scanf("%d",&M[i]);
int traget;
traget=kmp();
if(traget==-1)
cout<<traget<<endl;
else cout<<traget+1<<endl;
}
return 0;
}