#include<stdio.h>
int a[1000005], b[10005];
int fail[10005];
int n, m, T;
void getfail()
{
fail[0] = -1;
int i, j;
for(i = 1, j = -1; i < m; i ++)
{
while(j >= 0 && b[j + 1] != b[i])
{
j = fail[j];
}
if(b[j + 1] == b[i])
j ++;
fail[i] = j;
}
return ;
}
int kmp()
{
getfail();
int i, j;
for(i = 0, j = 0; i < n;i ++)
{
while(j && b[j] != a[i])
{
j = fail[j - 1] + 1;
}
if(b[j] == a[i])
j ++;
if(j == m)
return i - m + 2;
}
return -1;
}
int main(int argc, char const *argv[])
{
scanf("%d", &T);
int i, j;
while(T--)
{
scanf("%d%d", &n, &m);
for(i = 0; i < n; i ++)
scanf("%d", &a[i]);
for(i = 0; i < m; i ++)
scanf("%d", &b[i]);
getfail();
printf("%d\n", kmp());
}
return 0;
}
#include<stdio.h>
int a[1000005], b[10005];
int fail[10005];
int n, m, T;
void getfail()
{
fail[0] = -1;
int i, j;
for(i = 1, j = -1; i < m; i ++)
{
while(j >= 0 && b[j + 1] != b[i])
{
j = fail[j];
}
if(b[j + 1] == b[i])
j ++;
fail[i] = j;
}
return ;
}
int kmp()
{
getfail();
int i, j;
for(i = 0, j = 0; i < n;i ++)
{
while(j && b[j] != a[i])
{
j = fail[j - 1] + 1;
}
if(b[j] == a[i])
j ++;
if(j == m)
return i - m + 2;
}
return -1;
}
int main(int argc, char const *argv[])
{
scanf("%d", &T);
int i, j;
while(T--)
{
scanf("%d%d", &n, &m);
for(i = 0; i < n; i ++)
scanf("%d", &a[i]);
for(i = 0; i < m; i ++)
scanf("%d", &b[i]);
getfail();
printf("%d\n", kmp());
}
return 0;
}