D. Запросы на различные символы
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Вам задана строка $$$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]$$$.
Входные данные

Первая строка входных данных содержит одну строку $$$s$$$, состоящую из не более, чем $$$10^5$$$ строчных букв латинского алфавита.

Вторая строка входных данных содержит одно целое число $$$q$$$ ($$$1 \le q \le 10^5$$$) — количество запросов.

Следующие $$$q$$$ строк содержат запросы, по одному в строке. Каждый запрос задан в формате, описанном в условии задачи. Гарантируется, что есть хотя бы один запрос второго типа.

Выходные данные

На каждый запрос второго типа выведите ответ на него — количество различных символов в подстроке, заданной в этом запросе.

Примеры
Входные данные
abacaba
5
2 1 4
1 4 b
1 5 b
2 4 6
2 1 7
Выходные данные
3
1
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