#include <iostream>
#include<bits/stdc++.h>
#include <vector>
#include <stack>
#include <queue>
#include <deque>
#include <utility>
#include <set>
#include <map>
#include <unordered_set>
#include <unordered_map>
#include<algorithm>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#define IOF ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
#define ll long long
#define ld long double
#define cy cout << "YES" << '\n';
#define cn cout << "NO" << '\n';
using namespace std;
using namespace __gnu_pbds;
template<class T> using ordered_multiset = tree<T, null_type, less_equal<T>, rb_tree_tag, tree_order_statistics_node_update>;
template<typename T>
using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
int dx[] = {1, 0, -1, 0, -1, -1, 1, 1};
int dy[] = {0, -1, 0, 1, -1, 1, -1, 1};
int knightX[] = {-2, -2, 2, 2, 1, 1 , -1, -1};
int knighty[] = {-1, 1, -1, 1, -2, 2, -2, 2};
char di[] = {'D', 'L', 'U', 'R'};
const int N =2e5+5;
const ll MOD = 998244353;
void FOI(){
freopen("input.txt", "r" , stdin);
freopen("output.txt", "w" , stdout);
}
//check ur idea
void solve(){
int n , m , a , b ; cin >> n >> m >> a >> b;
map<char , int> frq , frq1;
string s ; cin >> s;
char grid[n][m] ,grid1[m][n];
for(int i = 0 ; i < n ; i++){
for(int j = 0 ; j < m ; j ++){
cin >> grid[i][j];
}
}
for(int i = 0 ; i < m ; i++){
for(int j = 0 ; j < n ; j++){
grid1[i][j] = grid[j][i];
}
}
for(int i = 0 ; i < s.size() ; i++){frq[s[i]]++;}
for(int i = 0 ; i < a ; i++){
for(int j = 0 ; j < b ; j++)frq1[grid[i][j]]++;
}
ll maxi = 0;
for(int i = 0 ; i <= n-a ; i++){
for(int j = 0 ; j <= m-b ; j++){
int cnt = 1e9;
for(int k = 0 ; k < 26 ; k++){
if(frq[k+'a'] == 0)continue;
if(frq1[k+'a'] == 0){
cnt = 0;
break;
}
cnt = min((frq1[k+'a'])/frq[k+'a'] , cnt);
}
maxi = max(maxi , (ll)cnt);
for(int k = i ; k <= min(a+i , n-1) ; k++){
frq1[grid[k][j]]--;
if(b+j < m){
frq1[grid[k][b+j]]++;
}
}
}
frq1.clear();
for(int j = i+1 ; j <= min(a+i , n-1) ; j++){
for(int k = 0 ; k < b ; k++)frq1[grid[j][k]]++;
}
}
frq1.clear();
for(int i = 0 ; i < b ; i++){
for(int j = 0 ; j < a ; j++)frq1[grid1[i][j]]++;
}
for(int i = 0 ; i <= m-b ; i++){
for(int j = 0 ; j <= n-a ; j++){
int cnt = 1e9;
for(int k = 0 ; k < 26 ; k++){
if(frq[k+'a'] == 0)continue;
if(frq1[k+'a'] == 0){
cnt = 0;
break;
}
cnt = min((frq1[k+'a'])/frq[k+'a'] , cnt);
}
maxi = max(maxi , (ll)cnt);
for(int k = i ; k <= min(a+i , n-1) ; k++){
frq1[grid1[k][j]]--;
if(b+j < m){
frq1[grid1[k][b+j]]++;
}
}
}
frq1.clear();
for(int j = i+1 ; j <= min(a+i , n-1) ; j++){
for(int k = 0 ; k < b ; k++)frq1[grid1[j][k]]++;
}
}
cout << maxi << '\n';
}
int main() {
IOF
ll t = 1;
cin >> t;
while (t--) {
solve() ;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c3RhY2s+CiNpbmNsdWRlIDxxdWV1ZT4KI2luY2x1ZGUgPGRlcXVlPgojaW5jbHVkZSA8dXRpbGl0eT4KI2luY2x1ZGUgPHNldD4KI2luY2x1ZGUgPG1hcD4KI2luY2x1ZGUgPHVub3JkZXJlZF9zZXQ+CiNpbmNsdWRlIDx1bm9yZGVyZWRfbWFwPgojaW5jbHVkZTxhbGdvcml0aG0+CiNpbmNsdWRlIDxleHQvcGJfZHMvYXNzb2NfY29udGFpbmVyLmhwcD4KI2luY2x1ZGUgPGV4dC9wYl9kcy90cmVlX3BvbGljeS5ocHA+CiNkZWZpbmUgSU9GIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKSwgY2luLnRpZShudWxscHRyKSwgY291dC50aWUobnVsbHB0cik7CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgbGQgbG9uZyBkb3VibGUKI2RlZmluZSBjeSBjb3V0IDw8ICJZRVMiIDw8ICdcbic7CiNkZWZpbmUgY24gY291dCA8PCAiTk8iIDw8ICdcbic7CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnVzaW5nIG5hbWVzcGFjZSBfX2dudV9wYmRzOwoKdGVtcGxhdGU8Y2xhc3MgVD4gdXNpbmcgb3JkZXJlZF9tdWx0aXNldCA9IHRyZWU8VCwgbnVsbF90eXBlLCBsZXNzX2VxdWFsPFQ+LCByYl90cmVlX3RhZywgdHJlZV9vcmRlcl9zdGF0aXN0aWNzX25vZGVfdXBkYXRlPjsKdGVtcGxhdGU8dHlwZW5hbWUgVD4KdXNpbmcgb3JkZXJlZF9zZXQgPSB0cmVlPFQsIG51bGxfdHlwZSwgbGVzczxUPiwgcmJfdHJlZV90YWcsIHRyZWVfb3JkZXJfc3RhdGlzdGljc19ub2RlX3VwZGF0ZT47CgppbnQgZHhbXSA9IHsxLCAwLCAtMSwgMCwgLTEsIC0xLCAxLCAxfTsKaW50IGR5W10gPSB7MCwgLTEsIDAsIDEsIC0xLCAxLCAtMSwgMX07CmludCBrbmlnaHRYW10gPSB7LTIsIC0yLCAyLCAyLCAxLCAxICwgLTEsIC0xfTsKaW50IGtuaWdodHlbXSA9IHstMSwgMSwgLTEsIDEsIC0yLCAyLCAtMiwgMn07CmNoYXIgZGlbXSA9IHsnRCcsICdMJywgJ1UnLCAnUid9Owpjb25zdCBpbnQgTiA9MmU1KzU7CmNvbnN0IGxsIE1PRCA9IDk5ODI0NDM1MzsKdm9pZCBGT0koKXsKICAgIGZyZW9wZW4oImlucHV0LnR4dCIsICJyIiAsIHN0ZGluKTsKICAgIGZyZW9wZW4oIm91dHB1dC50eHQiLCAidyIgLCBzdGRvdXQpOwp9CgovL2NoZWNrIHVyIGlkZWEKCgp2b2lkIHNvbHZlKCl7CgppbnQgbiAsIG0gLCBhICwgYiA7IGNpbiA+PiBuID4+IG0gPj4gYSA+PiBiOwptYXA8Y2hhciAsIGludD4gZnJxICwgZnJxMTsKc3RyaW5nIHMgOyBjaW4gPj4gczsKY2hhciBncmlkW25dW21dICxncmlkMVttXVtuXTsKZm9yKGludCBpID0gMCA7IGkgPCBuIDsgaSsrKXsKICAgIGZvcihpbnQgaiA9IDAgOyBqIDwgbSA7IGogKyspewogICAgICAgIGNpbiA+PiBncmlkW2ldW2pdOwogICAgfQp9CmZvcihpbnQgaSA9IDAgOyBpIDwgbSA7IGkrKyl7CiAgICBmb3IoaW50IGogPSAwIDsgaiA8IG4gOyBqKyspewogICAgICAgIGdyaWQxW2ldW2pdID0gZ3JpZFtqXVtpXTsKICAgIH0KfQpmb3IoaW50IGkgPSAwIDsgaSA8IHMuc2l6ZSgpIDsgaSsrKXtmcnFbc1tpXV0rKzt9CmZvcihpbnQgaSA9IDAgOyBpIDwgYSA7IGkrKyl7CiAgICBmb3IoaW50IGogPSAwIDsgaiA8IGIgOyBqKyspZnJxMVtncmlkW2ldW2pdXSsrOwp9CmxsIG1heGkgPSAwOwpmb3IoaW50IGkgPSAwIDsgaSA8PSBuLWEgOyBpKyspewogICAgZm9yKGludCBqID0gMCA7IGogPD0gbS1iIDsgIGorKyl7CiAgICAgICAgaW50IGNudCA9IDFlOTsKICAgICAgICBmb3IoaW50IGsgPSAwIDsgayA8IDI2IDsgaysrKXsKICAgICAgICAgICAgaWYoZnJxW2srJ2EnXSA9PSAwKWNvbnRpbnVlOwogICAgICAgICAgICBpZihmcnExW2srJ2EnXSA9PSAwKXsKICAgICAgICAgICAgICAgIGNudCA9IDA7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICBjbnQgPSBtaW4oKGZycTFbaysnYSddKS9mcnFbaysnYSddICwgY250KTsKICAgICAgICB9CiAgICAgICAgbWF4aSA9IG1heChtYXhpICwgKGxsKWNudCk7CiAgICAgICAgZm9yKGludCBrID0gaSA7IGsgPD0gbWluKGEraSAsIG4tMSkgOyBrKyspewogICAgICAgICAgICBmcnExW2dyaWRba11bal1dLS07CiAgICAgICAgICAgIGlmKGIraiA8IG0pewogICAgICAgICAgICAgICAgZnJxMVtncmlkW2tdW2Iral1dKys7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBmcnExLmNsZWFyKCk7CiAgICAgZm9yKGludCBqID0gaSsxIDsgaiA8PSBtaW4oYStpICwgbi0xKSA7IGorKyl7CiAgICBmb3IoaW50IGsgPSAwIDsgayA8IGIgOyBrKyspZnJxMVtncmlkW2pdW2tdXSsrOwp9Cn0KZnJxMS5jbGVhcigpOwpmb3IoaW50IGkgPSAwIDsgaSA8IGIgOyBpKyspewogICAgZm9yKGludCBqID0gMCA7IGogPCBhIDsgaisrKWZycTFbZ3JpZDFbaV1bal1dKys7Cn0KZm9yKGludCBpID0gMCA7IGkgPD0gbS1iIDsgaSsrKXsKICAgIGZvcihpbnQgaiA9IDAgOyBqIDw9IG4tYSA7ICBqKyspewogICAgICAgIGludCBjbnQgPSAxZTk7CiAgICAgICAgZm9yKGludCBrID0gMCA7IGsgPCAyNiA7IGsrKyl7CiAgICAgICAgICAgIGlmKGZycVtrKydhJ10gPT0gMCljb250aW51ZTsKICAgICAgICAgICAgaWYoZnJxMVtrKydhJ10gPT0gMCl7CiAgICAgICAgICAgICAgICBjbnQgPSAwOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY250ID0gbWluKChmcnExW2srJ2EnXSkvZnJxW2srJ2EnXSAsIGNudCk7CiAgICAgICAgfQogICAgICAgIG1heGkgPSBtYXgobWF4aSAsIChsbCljbnQpOwogICAgICAgIGZvcihpbnQgayA9IGkgOyBrIDw9IG1pbihhK2kgLCBuLTEpIDsgaysrKXsKICAgICAgICAgICAgZnJxMVtncmlkMVtrXVtqXV0tLTsKICAgICAgICAgICAgaWYoYitqIDwgbSl7CiAgICAgICAgICAgICAgICBmcnExW2dyaWQxW2tdW2Iral1dKys7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBmcnExLmNsZWFyKCk7CiAgICAgZm9yKGludCBqID0gaSsxIDsgaiA8PSBtaW4oYStpICwgbi0xKSA7IGorKyl7CiAgICBmb3IoaW50IGsgPSAwIDsgayA8IGIgOyBrKyspZnJxMVtncmlkMVtqXVtrXV0rKzsKfQp9CmNvdXQgPDwgbWF4aSA8PCAnXG4nOwp9CgoKCgppbnQgbWFpbigpIHsKIAoKICAgIElPRgogICAgbGwgdCA9IDE7CiAgICBjaW4gPj4gdDsKICAgIHdoaWxlICh0LS0pIHsKCiAgICBzb2x2ZSgpIDsKCiAgICB9CiAKICAgIHJldHVybiAwOwp9