채소 키우기는 즐거워 3
시간 제한0.5초메모리 제한1024 MB
R, G, Y로 이루어진 길이 N 문자열이 주어질 때, 같은 문자가 이웃하지 않도록 재배열하는 데 필요한 최소 인접 교환 횟수를 구하고 불가능하면 -1을 출력한다.
문제
정원 가꾸기 전문가인 JOI군은 집 정원에서 Joy grass라는 채소를 기른다. 정원에는 동서 방향으로 N개의 화분이 나란히 놓여 있다. 화분은 서쪽 끝부터 1, ..., N의 번호가 붙어 있다. Joy grass는 N그루 있고, 화분마다 한 그루씩 심겨 있다.
봄이 되어 JOI군은 예상과 달리 Joy grass의 잎이 여러 색으로 나온 것을 발견했다. 게다가 Joy grass가 생각만큼 자라지 않았다는 것도 알게 되었다. 책을 찾아본 결과 다음 사실을 알아냈다.
- Joy grass에는 빨간색, 초록색, 노란색 잎이 나는 3종류가 있다.
- 같은 잎 색의 Joy grass가 가까이 있으면 성장이 방해된다.
그래서 JOI군은 같은 잎 색의 Joy grass가 이웃하지 않도록 화분을 다시 배치하기로 했다. 화분이 너무 무거워서 JOI군은 한 번의 작업으로 이웃한 화분에 있는 Joy grass 두 그루만 바꿔 놓을 수 있다. 즉 한 번의 작업으로 할 수 있는 일은 임의의 화분 i (1 ≤ i ≤ N − 1)를 골라 화분 i와 i + 1에 있는 Joy grass를 바꿔 놓는 것이다.
Joy grass의 수와 각 색이 주어졌을 때, 같은 잎 색의 Joy grass가 이웃하지 않도록 다시 배치하는 데 필요한 최소 작업 횟수를 구하는 프로그램을 작성하시오.
입력
표준 입력에서 다음 데이터를 읽는다.
N
S
S는 길이 N인 문자열이다. i번째 (1 ≤ i ≤ N) 문자는 화분 i에 있는 Joy grass의 잎 색이 빨간색, 초록색, 노란색일 때 각각 R, G, Y이다.
출력
같은 잎 색의 Joy grass가 이웃하지 않도록 다시 배치하는 데 필요한 최소 작업 횟수를 한 줄에 출력한다. 그렇게 다시 배치하는 것이 불가능하면 −1을 출력한다.
제한
- 1 ≤ N ≤ 400.
- S는 길이 N인 문자열이다.
- S의 각 문자는
R,G,Y중 하나이다.