60043 바보 자물쇠 Diamond III
문제
자물쇠를 빠르게 맞추는 대회가 KOI 나라에 개최될 예정이다. 이 대회에 참가하는 당신은 자물쇠를 맞추는 능력을 연습하려고 한다. 이번 대회에서 다룰 자물쇠는 그 성질이 특이하여, 바보 자물쇠 라는 이름이 붙어 있다.
바보 자물쇠는 알파벳 소문자로만 이루어진 문자열 로 표현할 수 있다. 당신은 한 번의 연산으로 자물쇠의 특정 문자를 골라, 알파벳 순서로 인접한 문자로 바꿀 수 있다. 예를 들어, 바보 자물쇠의 상태가 ioiaa 일 때, 당신에게 가능한 연산의 종류는 총 가지이다:
- 번째 문자를
i에서h로 바꾼다. - 번째 문자를
i에서j로 바꾼다. - 번째 문자를
o에서n로 바꾼다. - 번째 문자를
o에서p로 바꾼다. - 번째 문자를
i에서h로 바꾼다. - 번째 문자를
i에서j로 바꾼다. - 번째 문자를
a에서b로 바꾼다. - 번째 문자를
a에서b로 바꾼다.
바보 자물쇠는 순서대로 나열된 문자가 알파벳 오름차순으로 정렬되어 있을 경우 풀리는 특이한 성질을 가진다. 다시 말해, 바보 자물쇠의 번째 문자는 번째 문자보다 알파벳 순으로 뒤쳐지지 않아야 한다. 예를 들어, aabbcc, eel, a, zzzzz 는 알파벳 오름차순으로 정렬되어 있다. lee, ccbbaa, koi 는 알파벳 오름차순으로 정렬되어 있지 않다.
어떠한 바보 자물쇠의 상태가 문자열 로 주어졌을 때, 이 자물쇠를 풀기 위해 필요한 최소 연산 횟수를 자물쇠의 난이도 라고 하자. 당신은 문자열 의 난이도를 빠르게 계산하기 위해 열심히 연습하였다. 이제는 연습을 아래와 같은 방법으로 더 어렵게 하려고 한다.
초기 바보 자물쇠의 상태가 로 주어지고, 의 길이를 이라고 할 때, 당신에게는 개의 갱신 쿼리가 주어진다. 각 쿼리는 이상 이하의 정수 와 알파벳 소문자 로 주어지는데, 이는 의 번째 문자를 로 바꾸라는 뜻이다. 쿼리는 주어진 순서대로 적용하여야 한다. 당신은 맨 처음 주어진 바보 자물쇠 의 난이도를 출력한 후, 각 갱신 쿼리가 끝날 때마다 변경된 바보 자물쇠 의 난이도를 출력하여야 한다.
입력
첫 번째 줄에 문자열 가 주어진다.
다음 줄에 쿼리의 수 가 주어진다.
이라면, 다음 개의 줄에 정수 와 알파벳 소문자 가 공백으로 구분되어 주어진다.
출력
총 개의 정수를 출력한다. 첫 번째 줄에는 바보 자물쇠 의 난이도를 출력한다. 이라면, 이후 개의 줄에 걸쳐서 각 갱신 이후 변경된 바보 자물쇠 의 난이도를 출력한다.
제한
- 는 알파벳 소문자로만 이루어져 있다.
- 의 길이를 이라고 하였을 때, .
- 는 알파벳 소문자이다.
- 는 갱신 전 의 번째 문자와 다름이 보장된다.
- “알파벳 소문자”는 영문 알파벳 소문자를 의미하며, 순서대로 다음과 같은 26개가 있다:
abcdefghijklmnopqrstuvwxyz
서브태스크
| 번호 | 배점 | 제한 |
|---|---|---|
| 1 | 7 | , 는 문자 a, b 로만 이루어져 있다. |
| 2 | 6 | , 는 문자 a, b 로만 이루어져 있으며, 각 갱신 이후에도 이것이 유지된다. |
| 3 | 5 | , 는 문자 a, b, c 로만 이루어져 있으며, 각 갱신 이후에도 이것이 유지된다. |
| 4 | 4 | , 는 문자 a, b, c, d, e 로만 이루어져 있으며, 각 갱신 이후에도 이것이 유지된다. |
| 5 | 3 | |
| 6 | 12 | 는 문자 a, b 로만 이루어져 있으며, 각 갱신 이후에도 이것이 유지된다. |
| 7 | 10 | 는 문자 a, b, c 로만 이루어져 있으며, 각 갱신 이후에도 이것이 유지된다. |
| 8 | 8 | 는 문자 a, b, c, d, e 로만 이루어져 있으며, 각 갱신 이후에도 이것이 유지된다. |
| 9 | 45 | 추가 제약 조건이 없음. |
예제 입출력
ababba
5
1 b
3 b
2 a
2 b
5 a
2
2
1
2
1
2
acabed
5
1 c
2 a
3 d
4 c
5 a
3
4
3
5
4
5
acaykp
6
1 c
2 a
5 a
6 k
3 p
4 c
16
16
16
26
26
31
17
zaire
1
5 r
38
25