승혁이는 크로스워드 퍼즐을 풀고 있다. 퍼즐판의 정해진 위치마다 가로 방향 또는 세로 방향으로 단어를 하나씩 적어 넣으려 한다. 그런데 어떤 가로 단어와 세로 단어가 같은 칸을 지날 때, 그 칸에 들어가야 하는 글자가 서로 다르면 두 단어는 충돌한다.
승혁이는 단어를 고치지 않고, 서로 충돌하는 단어 쌍이 하나도 없도록 단어들의 부분집합을 골라 배치하려 한다. 이때 배치할 수 있는 단어의 최대 개수를 구하여라.
같은 방향(가로끼리, 세로끼리)의 단어는 위치가 겹치지 않으므로 서로 충돌하지 않는다. 충돌은 오직 가로 단어와 세로 단어가 한 칸에서 만나 그 칸에 서로 다른 글자를 요구할 때에만 발생한다.
첫째 줄에 테스트 케이스의 개수 $T$가 주어진다. 각 테스트 케이스는 다음과 같이 주어진다.
모든 단어는 알파벳 대문자로만 이루어진다. 가로 단어끼리 위치가 겹치거나 세로 단어끼리 위치가 겹치는 경우는 없다.
퍼즐판 가장 왼쪽 위 칸의 좌표는 $x = y = 0$이다. $x$는 가로(열) 위치, $y$는 세로(행) 위치를 나타낸다. 가로 단어는 시작 칸에서 오른쪽($x$가 커지는 방향)으로, 세로 단어는 시작 칸에서 아래쪽($y$가 커지는 방향)으로 한 글자씩 채워진다. 따라서 시작 칸이 $(x, y)$인 가로 단어의 $k$번째 글자는 칸 $(x+k, y)$에, 세로 단어의 $k$번째 글자는 칸 $(x, y+k)$에 놓인다 (단, $k$는 0부터 센다).
각 테스트 케이스마다, 서로 충돌하는 쌍이 하나도 없도록 배치할 수 있는 단어의 최대 개수를 한 줄에 출력한다.