카드 짝 맞추기

메모리 매치 게임의 진행 기록이 주어질 때, 이번 차례에 확실히 맞출 수 있는 짝의 수를 구한다.

보통5시뮬레이션해시맵그리디아직 제출이 없습니다시간 제한5초메모리 제한512 MB

문제

"카드 짝 맞추기" 게임을 한다.

이 게임은 그림 카드 NN장으로 진행한다. 카드는 짝을 이룬다. 서로 다른 그림이 N/2N/2가지 있고, 각 그림은 정확히 두 장의 카드에 그려져 있다.

게임을 시작할 때 카드를 섞어 그림이 보이지 않게 뒤집어 놓는다. 참가자는 차례를 번갈아 가며 같은 그림의 카드 두 장을 찾는다. 한 차례에 뒤집혀 있는 카드 하나를 골라 뒤집어 그림을 확인하고, 다시 뒤집혀 있는 카드 하나를 더 골라 뒤집어 그림을 확인한다. 두 카드의 그림이 같으면 두 장은 그림이 보이는 상태로 남고, 고른 참가자는 1점을 얻은 뒤 한 차례를 더 진행한다. 두 카드의 그림이 다르면 두 장을 다시 뒤집어 놓고 차례는 다음 참가자에게 넘어간다.

이제 내 차례다. 지금까지 게임에서 일어난 모든 행동이 주어진다. 이번 차례에 확실하게 얻을 수 있는 점수를 구한다. 관찰한 기록과 모순되지 않는 카드 배치는 여러 가지일 수 있으므로, 그 모든 배치에서 반드시 맞출 수 있는 짝의 최대 개수를 구하면 된다.

그림 1: 카드 8장으로 진행 중인 상황. 3번과 6번 카드만 짝이 맞아 그림이 보이고, 나머지 카드는 모두 뒤집혀 있다. 이때 몇 짝을 확실하게 맞출 수 있을까?

입력

첫째 줄에 테이블 위의 카드 수 NN이 주어진다. NN은 짝수다. (2N10002 \le N \le 1000)

둘째 줄에 지금까지 진행된 차례의 수 KK가 주어진다. (0K10000 \le K \le 1000)

다음 KK개 줄에는 각 차례를 진행된 순서대로 설명하는 정보가 주어진다. 한 줄은 정수 C1C_1, C2C_2와 단어 P1P_1, P2P_2로 이루어진다. C1C_1C2C_2는 테이블 위 카드의 위치이고 (1C1,C2N1 \le C_1, C_2 \le N, C1C2C_1 \ne C_2), P1P_1P2P_2는 각각 그 위치의 카드에 그려진 그림이다. 각 단어는 알파벳 소문자 a부터 z까지로만 이루어지고, 길이는 1 이상 20 이하다. P1=P2P_1 = P_2이면 두 카드는 그림이 보이는 상태로 남고, 위치 C1C_1C2C_2는 이후 다시 고를 수 없다.

뒤집혀 있는 카드는 항상 두 장 이상이다.

출력

확실하게 맞출 수 있는 짝의 개수 SS를 한 줄에 출력한다.