#abc157e. [abc157_e]Simple String Queries

[abc157_e]Simple String Queries

题目描述

给定一个长度为 NN 的字符串 SS,由小写英文字母组成。

处理 QQ 个查询,有以下两种类型:

  • 类型 11:将 SS 中第 iqi_q 个字符更改为 cqc_q。(如果第 iqi_q 个字符已经是 cqc_q,则不进行任何操作。)
  • 类型 22:回答在 SS 的子串中从第 lql_q 个字符到第 rqr_q 个字符(包括)之间出现的不同字符的数量。

约束条件

  • NNQQiqi_qlql_qrqr_q 是整数。
  • SS 是一个由小写英文字母组成的字符串。
  • cqc_q 是一个小写英文字母。
  • 1N5000001 \leq N \leq 500000
  • 1Q200001 \leq Q \leq 20000
  • S=N|S| = N
  • 1iqN1 \leq i_q \leq N
  • 1lqrqN1 \leq l_q \leq r_q \leq N
  • 每个测试用例中至少有一个类型为 22 的查询。

输入

输入以以下格式从标准输入中给出:

NN SS QQ Query1Query_1 \vdots QueryQQuery_Q

这里,QueryiQuery_i 在第 44 到第 (Q+3)(Q+3) 行之间的内容是以下之一:

11 iqi_q cqc_q 22 lql_q rqr_q

输出

对于每个类型为 22 的查询,打印一个行,包含答案。


示例输入 1

7
abcdbbd
6
2 3 6
1 5 z
2 1 1
1 4 a
1 7 d
2 1 7

示例输出 1

3
1
5

在第一个查询中,cdbb 中包含三种字母:bcd,所以我们打印 33

在第二个查询中,SS 被修改为 abcdzbd

在第三个查询中,a 中包含一种字母:a,所以我们打印 11

在第四个查询中,SS 被修改为 abcazbd

在第五个查询中,SS 没有改变,仍然是 abcazbd

在第六个查询中,abcazbd 中包含五种字母:abcdz,所以我们打印 55