1 /*
2 * kmp
3 */
4 #include <cstdio>
5 #include <iostream>
6
7 using namespace std;
8
9 const int N = 10005;
10 const int M = 1000005;
11
12 int str[M], pat[N], next[N];
13
14 void indexNext(int lenPat) {
15 int k = 0;
16 next[1] = 0;
17 for (int i=2; i<=lenPat; ++i) {
18 while (k && pat[k+1]!=pat[i]) k = next[k];
19 if (pat[k+1] == pat[i]) ++k;
20 next[i] = k;
21 }
22 }
23
24 int kmp(int lenPat, int lenStr) {
25 int k = 0;
26 for (int i=1; i<=lenStr; ++i) {
27 while (k && pat[k+1]!=str[i]) k = next[k];
28 if (pat[k+1] == str[i]) ++k;
29 if (k == lenPat) return i - lenPat + 1;
30 }
31 return -1;
32 }
33
34 int main() {
35 int t;
36 scanf ("%d", &t);
37 while (t--) {
38 int n, m;
39 scanf ("%d%d", &n, &m);
40 for (int i=1; i<=n; ++i) scanf ("%d", &str[i]);
41 for (int i=1; i<=m; ++i) scanf ("%d", &pat[i]);
42 indexNext(m);
43 printf ("%d\n", kmp(m, n));
44 }
45 return 0;
46 }