#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=5e5+10,mod=1e9+7;
string s,ss,sss;
char cz[N],ff,zz;
ll x,t,m,a,c,d,k,y,n,o,p,dl[N],down[55],
dp[35][35],dis[1],bj[N],h[205],ne[205],e[205];
int idx;
ll res,ans,num,b,g[1],v[N],w[N],
dx[4]={-1,1,0,0},dy[4]={0,0,-1,1};
typedef pair<ll,ll> pp;
pp da[N];
void add(int a,int b)
{
e[idx]=b;
ne[idx]=h[a];
h[a]=idx++;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>t;
while(t--){
cin>>n>>m>>d;
for(int i=1;i<=n;i++){
cin>>w[i];
}
for(int i=1;i<=m;i++){
cin>>v[i];
}
idx=1;
vector<ll>vv;
for(int i=1;i<=n;i++){
if(w[i]==v[idx]){
vv.push_back(i);
idx++;
}
}
if(vv.size()!=m){
cout<<0<<'\n';
continue;
}
a=0x3f3f3f3f,b=-0x3f3f3f3f;
for(int i=0;i<vv.size()-1;i++){
a=min(a,vv[i+1]-vv[i]);
b=max(b,vv[i+1]-vv[i]);
}
if(b>d){
cout<<0<<'\n';
continue;
}
for(int i=0;i<vv.size()-1;i++){
num=0;
num+=vv[i]-1;
num+=n-vv[i+1];
if(num>d-vv[i+1]+vv[i]){
a=min(a,d-vv[i+1]+vv[i]+1);
}
}
cout<<a<<'\n';
}
return 0;
}