#include <stdio.h>
#include <iostream>
#include <fstream>
#include <vector>
#include <exception>
#include <cstring>
#include <stdlib.h>
using namespace std;
const int Len=10000;
const int L=1000005;
int next[Len+5];
int str2[Len+5],str1[L];
void getNext(int next[],int str[],int len)
{
int i=0,j=-1;
while(i<len)
{
if((j==-1)||(str[i]==str[j]))
{
j++;
i++;
next[i]=j;
}
else j=next[j];
}
return;
}
void print(int next[],int len)
{
for(int i=0;i<len;i++)
printf("%d ",next[i]);
}
int cmp(int s1[],int len1,int s2[],int len2)
{
int i=0,j=0;//i->s1,j->s2
int times=0;
while(i<len1)
{
if((j==-1)||(s1[i]==s2[j]))
{
i++;
j++;
if(j>=len2)
{
//j=0;
times++;
break;
}
}
else j=next[j];
}
if(times>0) return (i-len2+1);
else return -1;
}
int main(int argc, char **argv)
{
int t;
memset(next,0,sizeof(next));
next[0]=-1;
scanf("%d",&t);
while(t--)
{
int n,m;
scanf("%d %d",&n,&m);
for(int i=0;i<n;i++)
scanf("%d",&str1[i]);
for(int i=0;i<m;i++)
scanf("%d",&str2[i]);
getNext(next,str2,m);
//print(next,len1);
//cout<<endl;
int times=cmp(str1,n,str2,m);
cout<<times<<endl;
}
return 0;
}