격자에 개의 돌이 놓여있다. 각 격자칸에는 최대 하나의 돌만 놓일 수 있다. 각 돌은 파란색 또는 빨간색이며, 각 색의 돌은 최소 하나씩 존재한다. 이 격자의 행 열 격자칸을 로 나타내자.
두 돌 , 의 좌표가 각각 와 일 때, 와 가 모두 성립하면 가 를 이긴다고 한다.
다음 작업을 원하는 만큼 반복해 임의의 빨간 돌이 임의의 파란 돌을 이기는 완전한 승리 상태를 달성하고 싶다.
완전한 승리를 달성하기 위해 필요한 최소 작업 횟수를 계산하는 프로그램을 작성하라.
첫 줄에 돌의 개수를 나타내는 정수 과 좌표 범위를 나타내는 정수 이 주어진다. ( )
그다음 개의 줄에 각 돌의 좌표와 색상이 주어진다. 각 줄에는 세 개의 값이 공백으로 구분되어 주어진다.
첫 번째와 두 번째 값은 각각 돌의 행 번호와 열 번호를 나타내는 이상 이하의 정수이다. 세 번째 값은 영어 대문자 B
또는 R
이며, 각각 돌이 파란 색과 빨간 색임을 의미한다.
모든 돌이 놓인 위치는 서로 다르며, 최소 하나의 파란 돌과 빨간 돌이 존재하는 입력만 주어진다.
첫 줄에 완전한 승리를 달성하는 데 필요한 최소 작업 횟수를 출력한다. 단, 달성이 불가능한 경우에는 을 출력한다.
7 8 1 1 R 2 4 B 4 1 B 5 6 R 6 7 R 7 1 R 8 2 B
3
4 2 1 1 B 1 2 B 2 1 R 2 2 R
-1
2 2 1 1 R 2 2 B
3
세 번째 예제에서 에 있는 빨간 돌을 로 옮기고, 에 있는 파란 돌을 로 옮긴 후, 에 있는 빨간 돌을 로 옮기면 완전한 승리를 얻는다.
입력 케이스들은 다음과 같은 종류로 구별되며, 한 종류의 케이스를 다 맞혀야 그 종류에 배정된 점수를 받을 수 있다.
종류 1: 17점
종류 2: 9점
종류 3: 23점
종류 4: 51점
모든 입력 케이스가 주어진다.