编程题
### 问题描述
我们定义两个字符串 $S,T$ 是相似的,当且仅当 $|S|=|T|$,且至多存在一个 $i \in [1,|S|]$,满足 $S_i≠T_i$,即 $S$ 可以通过至多一次修改变成 $T$。
给定长度为 $N$ 的字符串 $S$,字符集为小写字母,支持以下 $2$ 种操作:
> 1. 给定 $x,c$,表示将 $S[x]$ 修改为 $c$。
> 2. 给定 $l_1,r_1,l_2,r_2$,询问 $S[l_1,r_1]$ 和 $S[l_2,r_2]$ 是否相似。
### 输入格式
第一行包含 $2$ 个正整数 $N,Q$,表示字符串长度和操作次数。
第二行给定字符串 $S$。
之后 $Q$ 行,每行第一个数表示 $type$:
如果 $type=1$,之后给定 $2$ 个正整数 $x,c$,表示一次修改。
如果 $type=2$,之后给定 $4$ 个正整数 $l_1,r_1,l_2,r_2$,表示一次询问,保证 $1 \leq l_1 \leq r_1 \leq N ,1 \leq l_2 \leq r_2 \leq N$。
### 输出格式
对于每次询问,如果相同输出 `Yes`,否则输出 `No`。
### 样例输入
```text
5 3
abaaa
1 4 b
2 1 3 3 5
2 1 1 2 2
```
### 样例输出
```text
Yes
Yes
```
### 评测数据规模
对于所有测评数据,$1 \leq N,Q \leq 10^5$。