만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

사진작가

면접 대비

시간 제한2초메모리 제한1024 MB

요약
N장의 사진 회전 상태가 주어질 때, 연속된 k장을 시계 방향으로 한 번에 돌려 모든 사진을 바로 세우는 최소 연산 횟수를 구합니다.
난이도

보통10점 중 5점

유형
그리디, 누적 합, 배열
정답자
아직 제출이 없습니다

문제

한 사진작가가 디지털 카메라로 좋은 사진을 많이 찍었고, 이 사진을 컴퓨터에 연결해 옮기려고 합니다. 사진마다 카메라를 든 방향이 달라서 일부 사진은 회전되어 있습니다. 가능한 회전 상태는 네 가지이며 각각 위, 오른쪽, 아래, 왼쪽이라고 부릅니다. 여기서 위는 사진 속에서 위를 향한 쪽을 뜻합니다. 사진이 위 상태이면 올바른 방향입니다. 컴퓨터는 사진을 목록으로 보여주고, 사진 한 장을 시계 방향으로 90도 회전하는 기능이 있습니다. 회전 순서는 아래 그림과 같습니다.

사진이 회전되는 방식

사진작가는 사진을 한 장씩 돌리는 일이 지루해서 이를 게임으로 만들었습니다. 사진작가는 양의 정수 kk를 정합니다. 사진을 회전하는 방법은 목록에서 서로 붙어 있는 사진을 정확히 kk장 골라 모두 동시에 회전하는 것뿐입니다. 형식적으로 사진이 NN장 있고 이를 a1,a2,…,aNa_1, a_2, \dots, a_N이라고 합시다. 사진작가는 인덱스 ii (1≤i≤N−k+11 \leq i \leq N-k+1)를 고르고, ai,ai+1,…,ai+k−1a_i, a_{i+1}, \dots, a_{i+k-1}을 시계 방향으로 90도 회전합니다. 이것을 연산 한 번이라고 합니다.

목표는 가능한 적은 연산으로 모든 사진을 올바른 방향으로 만드는 것입니다. 필요한 최소 연산 횟수를 구하는 프로그램을 작성하세요.

입력

첫 줄에 두 정수 NN과 kk (1≤k≤N≤100 0001 \leq k \leq N \leq 100\,000)가 주어집니다. 각각 사진의 총 장수와 함께 회전해야 하는 사진의 장수입니다.

둘째 줄에는 사진의 처음 회전 상태를 나타내는 NN개의 문자가 주어집니다. U는 위, H는 오른쪽, N은 아래, V는 왼쪽입니다.

출력

모든 사진을 올바른 방향으로 만드는 데 필요한 최소 연산 횟수를 출력하세요. 모든 사진을 올바른 방향으로 만들 수 없으면 −1-1을 출력하세요.

힌트

최적 해의 한 예는 다음과 같습니다. 위치 3-4의 사진을 세 번 회전해 UVVU를 만들고, 위치 2-3의 사진을 한 번 회전해 UUUU를 얻습니다. 연산은 모두 4번입니다.

예제3

  1. 예제 1

    입력
    4 2
    UVUH
    
    예상 출력
    4
    
  2. 예제 2

    입력
    8 5
    HUNVVNVH
    
    예상 출력
    9
    
  3. 예제 3

    입력
    5 2
    UUUUV
    
    예상 출력
    -1