#JXGQ24007. 长难句

长难句

题目描述

强哥准备了一个英文长句SS, 这个长句只由大小写英文字母组成, len(S)len(S) (1len(S)105)(1 \le len(S) \le 10^5)表示该英文长句的长度. 现在强哥想和你玩一个游戏, 进行 qq (1q105)(1 \le q \le 10^5)次操作, 操作类型有两种:

  • query l r. 表示询问下标在[l,r][l, r] (1lrlen(S))(1 \le l \le r \le len(S))区间内不同种类的字母有多少(注意, 对应的大小写字母被认为是同一个种类,比如'A'和'a','B'和'b'属于同一个种类的字母)。
  • do a b. 表示将下标为aa (字符串SS的下标从11开始) 的字符改成字符bb. (1alen(S)1 \le a \le len(S), bb 是一个大小写字母) 。

输入格式

输入第一行包含了一个长度不超过10510^5的字符串,该字符串只含有大小写字母。 输入第二行有一个整数 qq, 表示进行操作的次数 (1q105)(1 \le q \le 10^5)。 接下来有 qq 行,每一行的操作和问题描述的格式一样. 保证至少有一个查询。

输出格式

对于每一次查询, 输出对应区间 [l,r][l, r] 内不同种类字母的数量.

输入样例1:

AbAcaBa
5
query 1 4
do 4 b
do 5 b
query 4 6
query 1 7

输出样例1:

3
1
2

数据范围

对于20%20\%的数据,1len(S)1001 \le len(S) \le 1001q1001 \le q \le 1001LR1001 \le L \le R \le 100

对于80%80\%的数据,1len(S)1051 \le len(S) \le 10^51q1051 \le q \le 10^51LR1051 \le L \le R \le 10^5