거짓말쟁이

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

문제

알고리즘 캠프에 참가한 NN명이 교실 앞에 모여 원형으로 앉아 있다. 각 사람은 반시계 방향으로 00번부터 N1N-1번까지 번호가 매겨져 있다.

참가자는 모두 정직한 사람이거나 거짓말쟁이다. 정직한 사람은 항상 사실만 말하고, 거짓말쟁이는 항상 거짓만 말한다.

진행자는 각 사람에게 오른쪽에 앉은 사람이 거짓말쟁이인지 물었다. 정직한 사람은 사실대로, 거짓말쟁이는 거짓으로 답한다. 정직한 사람과 거짓말쟁이 모두 답변을 거부할 수도 있다.

사람들의 대답이 주어졌을 때, 그런 대답이 나오는 정직한 사람과 거짓말쟁이의 조합이 존재하면 거짓말쟁이 수의 최솟값을, 가능한 조합이 없으면 1-1을 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 사람의 수 NN이 주어진다. (2N502 \le N \le 50)

둘째 줄에 길이가 NN인 문자열로 사람들의 답변이 주어진다. 왼쪽에서 ii번째 문자는 ii번 사람의 답변이며, 번호는 00부터 센다.

답변이 L이면 오른쪽 사람이 거짓말쟁이라고 대답한 것이고, H이면 정직한 사람이라고 대답한 것이며, ?이면 답변을 거부한 것이다.

출력

주어진 대답이 나오는 정직한 사람과 거짓말쟁이의 조합이 존재하면 거짓말쟁이 수의 최솟값을 출력한다. 가능한 조합이 없으면 1-1을 출력한다.

참고

번호가 반시계 방향으로 붙어 있으므로 ii번 사람의 오른쪽에 앉은 사람은 (i+1)modN(i+1) \bmod N번 사람이다.