#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
//英语 看博友分析 抄博友程序 二分图匹配 没掌握
char da[35][55][55];
int g[40][40];
int vis[40];
int link[40];
int k,n,m,h,w;
bool check(int tt,char a)
{
for(int i=0;i<n-h+1;i++)
{
for(int j=0;j<m-w+1;j++)
{
int flag=0;
for(int x=0;x<h;x++)
{
for(int y=0;y<w;y++)
{
if(da[tt][x+i][y+j]!='0'&& da[tt][x+i][y+j]!=a)
{
flag=1;
}
}
}
if(flag==0)
{
return true;
}
}
}
return false;
}
bool dfs(int x)//抄博友程序 背
{
for(int j=0;j<26;j++)
{
if(g[x][j]==1&&vis[j]==0)
{
vis[j]=1;
if(link[j]==-1 ||dfs(link[j]))
{
link[j]=x;
return true;
}
}
}
return false;
}
int main()
{
int T;
cin>>T;
while(T--)
{
memset(g,0,sizeof(g));
memset(da,0,sizeof(da));
memset(link,-1,sizeof(link));
cin>>k>>n>>m>>h>>w;
for(int i=0;i<k;i++)
{
for(int j=0;j<n;j++)
{
for(int l=0;l<m;l++)
{
cin>>da[i][j][l];
}
}
}
/*
for(int i=0;i<k;i++)
{
for(int j=0;j<n;j++)
{
for(int l=0;l<m;l++)
{
cout<<da[i][j][l];
}
cout<<endl;
}
}*/
int ans=0;
for(int i=0;i<k;i++)
{
if(check(i,'0'))
{
ans++;
continue;
}
for(int j=0;j<26;j++)
{
if(check(i,j+'A'))
{
g[i][j]=1;//抄博友程序 没掌握
}
}
}
for(int i=0;i<k;i++)
{
memset(vis,0,sizeof(vis));
if(dfs(i))//抄博友程序 没掌握
{
ans++;
}
}
cout<<ans<<endl;
}
}