틀렸습니다

아직 제출이 없습니다시간 제한1초메모리 제한256 MB

문제

승혁이는 크로스워드 퍼즐을 풀고 있다. 퍼즐판의 정해진 위치마다 가로 방향 또는 세로 방향으로 단어를 하나씩 적어 넣으려 한다. 그런데 어떤 가로 단어와 세로 단어가 같은 칸을 지날 때, 그 칸에 들어가야 하는 글자가 서로 다르면 두 단어는 충돌한다.

승혁이는 단어를 고치지 않고, 서로 충돌하는 단어 쌍이 하나도 없도록 단어들의 부분집합을 골라 배치하려 한다. 이때 배치할 수 있는 단어의 최대 개수를 구하여라.

같은 방향(가로끼리, 세로끼리)의 단어는 위치가 겹치지 않으므로 서로 충돌하지 않는다. 충돌은 오직 가로 단어와 세로 단어가 한 칸에서 만나 그 칸에 서로 다른 글자를 요구할 때에만 발생한다.

입력

첫째 줄에 테스트 케이스의 개수 $T$가 주어진다. 각 테스트 케이스는 다음과 같이 주어진다.

  • 첫째 줄에 가로 단어의 개수 $H$와 세로 단어의 개수 $V$가 공백으로 구분되어 주어진다. ($1 \le H, V \le 500$)
  • 이어지는 $H$개의 줄에는 각 가로 단어의 시작 칸 좌표 $x$, $y$와 단어 $W$가 주어진다. ($0 \le x, y \le 1000$, $1 \le |W| \le 1000$)
  • 이어지는 $V$개의 줄에는 각 세로 단어의 시작 칸 좌표 $x$, $y$와 단어 $W$가 주어진다. ($0 \le x, y \le 1000$, $1 \le |W| \le 1000$)

모든 단어는 알파벳 대문자로만 이루어진다. 가로 단어끼리 위치가 겹치거나 세로 단어끼리 위치가 겹치는 경우는 없다.

퍼즐판 가장 왼쪽 위 칸의 좌표는 $x = y = 0$이다. $x$는 가로(열) 위치, $y$는 세로(행) 위치를 나타낸다. 가로 단어는 시작 칸에서 오른쪽($x$가 커지는 방향)으로, 세로 단어는 시작 칸에서 아래쪽($y$가 커지는 방향)으로 한 글자씩 채워진다. 따라서 시작 칸이 $(x, y)$인 가로 단어의 $k$번째 글자는 칸 $(x+k, y)$에, 세로 단어의 $k$번째 글자는 칸 $(x, y+k)$에 놓인다 (단, $k$는 0부터 센다).

출력

각 테스트 케이스마다, 서로 충돌하는 쌍이 하나도 없도록 배치할 수 있는 단어의 최대 개수를 한 줄에 출력한다.