퍼즐 콤보

NYPC 2018 · 예선

11차원 퍼즐 게임을 다음과 같은 규칙으로 만들어 보려고 한다.

  • A부터 Z까지의 알파벳 대문자는 각각 2626가지의 서로 다른 색을 나타낸다.
  • 퍼즐은 여러 개의 블록들이 한 줄로 연속으로 주어지며, 각 블록의 색은 알파벳 대문자로 표현된다.
  • 연속하면서 같은 색을 갖는 블록들은 체인으로 연결된다.
  • 연결된 하나의 체인에 있는 블록의 개수가 33 이상이면, 이 체인을 색체인이라고 한다.
  • 퍼즐에 색체인이 하나 이상 있다면, 다음과 같은 일이 일어난다.
    1. 퍼즐의 모든 색체인들이 동시에 삭제되고, 콤보가 한번 발생한다.
    2. 삭제된 색체인 마다 오른쪽의 블록들은 왼쪽으로 순서대로 옮겨와 왼쪽에 있는 블록들과 연속하게 된다. 따라서, 퍼즐에 남아 있는 블록들은 모두 다시 한 줄로 연속한 퍼즐이 된다.
    3. 이 때, 옮겨온 블록들로 인해 퍼즐에 다시 색체인이 생긴다면 위의 작업이 다시 반복된다.

예를 들어 AABBBAACCCAA라는 퍼즐을 고려하자. 이 퍼즐에는 BBB와 CCC인 색체인 두 개가 있다. 이 두 개의 색체인이 삭제되면 콤보가 한번 발생하고, 퍼즐은 AAAAAA가 된다. 이 퍼즐에는 AAAAAA인 색체인 하나가 있고, 이 색체인이 삭제되면 콤보가 한번 발생한다. 퍼즐의 모든 블록은 삭제되어 색체인이 없기 때문에 작업이 종료된다.

퍼즐이 주어졌을 때, 콤보의 발생 횟수와 남은 퍼즐을 출력하는 프로그램을 작성하라.

입력 형식

첫째 줄에 퍼즐의 길이를 나타내는 자연수 NN이 주어진다. (1N10000001 \le N \le 1\,000\,000)

다음 줄에 길이 NN인 퍼즐 문자열이 주어진다.

출력 형식

출력의 첫 줄에는 콤보의 발생 횟수를 출력한다. 다음 줄에 남은 퍼즐을 출력한다. 남은 퍼즐에 블록이 없을 경우에는 PERFECT!!! 를 출력한다.

예제 1

입력

12 AABBBAACCCAA

출력

2 PERFECT!!!

예제 2

입력

15 AABBCCCBBAABBCC

출력

3 BBCC

채점 방식

입력 케이스들은 다음과 같은 종류로 구별되며, 한 종류의 케이스를 다 맞추어야 그 종류에 배정된 점수를 받을 수 있다.

종류 1: 70점

N1000N \le 1\,000.

종류 2: 130점

별다른 제약조건 없음.

해설