4043 - 速记

题目描述

在一次速记课堂上,老师为了训练学生的速记能力,设计了一个互动练习。

老师给出了一个长度为 N 的字符串 R,由小写英文字母组成,代表一份初始笔记内容。

老师会进行 M 次操作,操作分为两种类型:

类型 1:将笔记 R 中第 x 个字符修改为新的字符 c。(如果该位置的字符已经是 c,则无需修改。)

类型 2:统计笔记 R 从第 x 个字符开始到第 y 个字符结束(包含 x,y 两端)的子串中包含的不同字符数量。

你的任务是根据老师的指令,完成所有操作,并准确回答每次类型 2 操作的查询结果,以展示你的速记和分析能力。

输入

第一行包含一个整数 N,表示笔记字符串的长度。

第二行包含一个由小写英文字母组成的字符串 R,长度为 N

第三行包含一个整数 M,表示操作次数。

接下来 M 行,每行描述一个操作,格式为以下之一:1 x c 或 2 x y。

输出

对于每个类型 2 的操作,输出一行,包含一个整数,表示对应子串中不同字符的数量。

样例

输入

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

输出

3
1
4

输入

12
zbfouksglthm
15
2 3 10
1 11 y
2 6 10
1 8 u
2 2 7
2 3 4
2 1 11
2 5 7
1 5 v
2 4 8
1 6 e
2 1 2
1 3 t
1 7 q
1 12 g

输出

8
5
6
2
10
3
5
2

输入

21
fsllpwxxybjbiapylqrue
20
2 1 21
2 9 13
1 12 l
1 6 g
1 10 k
1 12 q
2 3 5
1 2 r
1 3 f
2 8 19
2 14 15
1 18 l
1 17 h
1 7 l
1 21 o
1 11 t
2 7 17
2 5 12
1 7 r
1 3 v

输出

15
4
2
10
2
10
8
说明

样例 1 解释

第一次操作:统计子串 "cdbb"(位置 3 到 6)的不同字符,包含 bcd 三种字符,输出 3

第二次操作:将位置 5 的字符改为 z,笔记变为 abcdzbd

第三次操作:统计子串 a(位置 1 到 1),仅包含 a 一种字符,输出 1

第四次操作:将位置 4 的字符改为 a,笔记变为 abcazbd

第五次操作:将位置 7 的字符改为 d,笔记不变,仍为 abcazbd

第六次操作:统计子串 abcazb(位置 1 到 6)的不同字符,包含 abcz 四种字符,输出 4

数据范围

对于 100\% 的数据,满足 R 是由小写英文字母组成的字符串,c 是一个小写英文字母,1 \leq N \leq 5000001 \leq M \leq 200001 \leq x,y \leq N,对于操作 2 满足 1 \leq x \leq y \leq N

测试数据保证,至少有一个类型 2 的操作。

测试点数据范围
1 \sim 81 \le N \le 1001 \le M \le 20000
9 \sim 251 \leq N \leq 5000001 \leq M \leq 20000
标签
题目参数
时间限制 1 秒
内存限制 512 MB
提交次数 0
通过人数 0
金币数量 3 枚
难度 基础


上一题 下一题