주택부는 여러 개의 주택 단지를 짓는 대규모 건설 사업을 계획하고 있다. 각 단지는 여러 채의 아파트로 이루어지며, 공무원에게 합리적인 가격으로 분양된다. 주택부는 이 사업에 쓸 수 있는 여러 개의 큰 부지를 확보했고, 각 부지에 단지를 하나씩 지으려고 한다. 모든 부지는 직사각형이며, 각 부지는 $m \times n$ 개의 $1 \times 1$ 크기 정사각형 블록으로 나뉜다. 모든 주택 단지는 $h \times w$ 크기의 직사각형으로, 그 부지 안의 정확히 $h \times w$ 개의 블록을 덮는다.
문제는, 각 부지에 원래 낡은 건물들이 일부 있어서(각 건물은 부지의 블록 하나를 정확히 차지한다) 단지를 지을 빈 공간을 충분히 확보하기 어렵다는 점이다. 따라서 주택부는 이 건물들 중 일부를 사들여 철거하고 필요한 공간을 확보해야 한다. 이 낡은 건물들은 여러 명의 소유주에게 속해 있다.
주민들의 반발에 대응하여, 주택부는 다음과 같은 "공정한" 원칙을 발표했다. 어떤 부지에서 건물을 사들일 때에는 오직 한 소유주에게 속한 건물만 골라서 모두 합리적인 가격에 사들인다. 그리고 같은 소유주의 건물을 다른 부지에서는 절대 사들이지 않겠다고 약속한다. 이 제약 때문에 단지를 지을 수 없는 부지가 생길 수도 있다.
정리하면, 각 부지에서는 (매입이 필요하다면) 한 소유주의 건물만 철거할 수 있고, 한 소유주의 건물은 사업 전체를 통틀어 최대 한 부지에서만 매입할 수 있다. 이 조건을 지키면서 최대 몇 개의 주택 단지를 지을 수 있는지 구하는 프로그램을 작성하시오.
첫 줄에 테스트 케이스의 수 $t$ ($1 \le t \le 10$)가 주어진다. 이어서 각 테스트 케이스의 데이터가 주어진다.
각 테스트 케이스의 첫 줄에는 다섯 개의 정수 $k$, $m$, $n$, $h$, $w$가 주어진다. $k$ ($1 \le k \le 30$)는 부지의 개수, $m$과 $n$ ($1 \le m, n \le 50$)은 각 부지의 행과 열의 수, $h$와 $w$ ($1 \le h, w \le 50$)는 단지가 차지하는 행과 열의 수이다.
그 다음에는 $k \times m$ 개의 줄이 주어지며, $k$ 개의 부지를 각각 $m \times n$ 행렬로 나타낸다. 각 줄은 앞뒤 공백 없이 길이가 $n$인 문자열이다. 각 문자는 부지의 한 블록을 나타내며, 대문자 알파벳 A부터 Z까지 중 하나이면 그 블록을 소유한 소유주를, 문자 0(숫자 영)이면 그 블록이 비어 있음을 뜻한다. 같은 알파벳은 어느 부지에서든 같은 소유주를 가리킨다.
각 테스트 케이스마다 한 줄에, 그 테스트 케이스에서 지을 수 있는 주택 단지의 최대 개수를 출력한다.