#ABC157E. Simple String Queries

Simple String Queries

题目描述

You are given a string SS of length NN consisting of lowercase English letters.

Process QQ queries of the following two types:

  • Type 11: change the iqi_q-th character of SS to cqc_q. (Do nothing if the iqi_q-th character is already cqc_q.)
  • Type 22: answer the number of different characters occurring in the substring of SS between the lql_q-th and rqr_q-th characters (inclusive).

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

请处理以下两种类型的 QQ 查询:

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

输入格式

第一行为整数 NN
第二行为字符串 SS
第一行为整数 QQ
接下来有 QQ 行查询操作,每行包含以下内容之一:

11 iqi_q cqc_q

22 lql_q rqr_q

输出格式

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

样例 #1

样例输入 #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

说明

数据规模与约定

  • 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 类型的查询。

样例 11 解释

在第一个查询中,cdbb 包含三种字母:b, c, 和 d`,因此我们打印 33

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

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

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

在第五次查询中, SS 没有变化,仍然是 abcazbd

在第六次查询中,abcazbd包含五种字母:a"、"b"、"c"、"d "和 "z",因此我们打印 55