#include<iostream>
#include<cstdio>
#include<algorithm>
#define int unsigned long long
using std::cin;using std::cout;
constexpr int N=1005,X=105,b1=101,b2=131;
int t,n,m,x,y,base1[N],base2[N],h1[N][N],h2[X][X],answer[N*N],cnt;
std::string u[N],v[X];
inline int query(int ax,int ay,int bx,int by){
return h1[bx][by]-h1[ax-1][by]*base2[bx-ax+1]-h1[bx][ay-1]*base1[by-ay+1]+h1[ax-1][ay-1]*base1[by-ay+1]*base2[bx-ax+1];
}
signed main(){
std::ios::sync_with_stdio(false);
cin.tie(nullptr);cout.tie(nullptr);
for(cin>>t;t--;){
cin>>n>>m;
for(int i=1;i<=n;++i){
cin>>u[i];
u[i]=" "+u[i];
}
base1[0]=base2[0]=1;
for(int i=1;i<=m;++i) base1[i]=base1[i-1]*b1;
for(int i=1;i<=n;++i) base2[i]=base2[i-1]*b2;
for(int i=1;i<=n;++i)
for(int j=1;j<=m;++j)
h1[i][j]=h1[i-1][j]*b2+h1[i][j-1]*b1+u[i][j]-'a'-h1[i-1][j-1]*b1*b2;
cin>>x>>y;cnt=0;
for(int i=1;i<=n-x+1;++i)
for(int j=1;j<=m-y+1;++j)
answer[++cnt]=query(i,j,i+x-1,j+y-1);
std::sort(answer+1,answer+cnt+1);
for(int i=1;i<=x;++i){
cin>>v[i];
v[i]=" "+v[i];
}
for(int i=1;i<=x;++i)
for(int j=1;j<=y;++j)
h2[i][j]=h2[i-1][j]*b2+h2[i][j-1]*b1+v[i][j]-'a'-h2[i-1][j-1]*b1*b2;
cout<<std::upper_bound(answer+1,answer+cnt+1,h2[x][y])-std::lower_bound(answer+1,answer+cnt+1,h2[x][y])<<'\n';
}
return 0;
}