Вам задана строка \(s\), состоящая из строчных букв латинского алфавита и \(q\) запросов к этой строке.
Напомним, что подстрокой \(s[l; r]\) строки \(s\) называется строка \(s_l s_{l + 1} \dots s_r\). Например, подстроками «codeforces» являются «code», «force», «f», «for», но не строки «coder» и «top».
Всего существует два вида запросов:
- \(1~ pos~ c\) (\(1 \le pos \le |s|\), \(c\) является строчной буквой латинского алфавита): заменить \(s_{pos}\) на \(c\) (присвоить \(s_{pos} := c\));
- \(2~ l~ r\) (\(1 \le l \le r \le |s|\)): посчитать количество различных символов в подстроке \(s[l; r]\).
Выходные данные
На каждый запрос второго типа выведите ответ на него — количество различных символов в подстроке, заданной в этом запросе.
Примеры
| № | Входные данные | Выходные данные |
|
1
|
abacaba 5 2 1 4 1 4 b 1 5 b 2 4 6 2 1 7
|
3
1
2
|
|
2
|
dfcbbcfeeedbaea 15 1 6 e 1 4 b 2 6 14 1 7 b 1 12 c 2 6 8 2 1 6 1 7 c 1 2 f 1 10 a 2 7 9 1 10 a 1 14 b 1 1 f 2 1 11
|
5
2
5
2
6
|