만드는 중입니다

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

알파벳과 쿼리 (Easy)

면접 대비

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

요약
문자열이 주어질 때 구간 안에서 같은 글자가 연속으로 이어진 최대 블록 수를 세거나, 구간의 글자를 다음 알파벳으로 바꾸는 쿼리를 처리합니다.
난이도

쉬움10점 중 3점

유형
문자열, 시뮬레이션
정답자
아직 제출이 없습니다

문제

Hard 버전과 비교하면 NN, QQ의 제한만 다르고 나머지 문제 내용은 같다.

다음 조건을 모두 만족하는 부분 문자열을 알파벳 묶음이라고 한다.

  • 하나의 같은 알파벳으로만 이루어져 있어야 한다.
  • 전체 문자열에서 이 부분 문자열을 포함하는 더 긴 부분 문자열로 알파벳 묶음을 만들 수 있으면, 그 부분 문자열은 알파벳 묶음이 아니다.

예를 들어 AAABBAAC에는 알파벳 묶음이 AAA, BB, AA, C로 4개 있다. B와 AC는 조건을 만족하지 않으므로 알파벳 묶음이 아니다.

영어 대문자로만 이루어진 길이 NN의 문자열 S=S1S2…SNS = S_1 S_2 \dots S_N이 주어진다. 다음 쿼리를 처리하는 프로그램을 작성하라.

  • 1 l r: 부분 문자열 SlSl+1…SrS_l S_{l+1} \dots S_r에서 알파벳 묶음의 개수를 출력한다.
  • 2 l r: 부분 문자열 SlSl+1…SrS_l S_{l+1} \dots S_r의 모든 알파벳을 알파벳 순서상 다음 알파벳으로 바꾼다. 단, Z는 A로 바꾼다.

SlSl+1…SrS_l S_{l+1} \dots S_r은 SS의 ll번째 문자부터 rr번째 문자까지를 순서대로 포함하는 부분 문자열이다.

입력

첫 줄에 문자열의 길이 NN과 쿼리의 개수 QQ가 공백으로 구분되어 주어진다. (3≤N,Q≤2003 \leq N, Q \leq 200)

둘째 줄에 영어 대문자로만 이루어진 길이 NN의 문자열 SS가 주어진다.

셋째 줄부터 QQ개의 줄에 걸쳐 쿼리가 한 줄에 하나씩 주어진다. (1≤l≤r≤N1 \leq l \leq r \leq N)

1번 쿼리는 한 번 이상 주어진다.

출력

1번 쿼리의 결괏값을 입력된 순서대로 한 줄에 하나씩 출력한다.

예제1

  1. 예제 1

    입력
    8 5
    AAABBAAC
    1 3 8
    2 2 7
    1 1 8
    2 6 7
    1 1 8
    
    예상 출력
    4
    5
    3