一块环形展板上按顺序写着 个小写英文字母,记为字符串 。从任意一个位置开始,沿固定方向读完一圈,都能得到一个长度为 的字符串。这样得到的 个字符串就是 的 个循环位移:分别从第 个位置开始读取,读到末尾后接着从开头读取,直到读完 个字符。
两个等长字符串称为同构,需要满足以下条件:如果可以按照某个一一对应的规则替换其中一个字符串的字母,使它变成另一个字符串。同一个字母的所有出现都必须替换成同一个字母,不同字母必须替换成不同字母;字母可以替换成它自己。每次比较两个字符串时,可以使用不同的替换规则。
将 的这 个循环位移按同构关系分成若干类,同构的循环位移属于同一类。
工作人员将对展板进行 次修改。每次修改把一个指定位置的字符替换为一个小写英文字母,修改会累积生效。请在每次修改后,求出当前 的所有循环位移共有多少个同构类。
第一行包含两个正整数 ,分别表示字符串的长度和修改次数。
第二行包含一个长度为 的字符串 ,表示展板上最初的字母排列。
接下来 行,每行包含一个正整数 和一个小写英文字母 ,表示将当前 的第 个字符改为 。
输出 行,每行一个正整数,第 行表示完成前 次修改后,当前 的所有循环位移的同构类数量。
4 2
abab
4 c
2 a
2
4
3 2
abc
1 c
2 c
3
1
样例 1:第一次修改后为 abac。四个循环位移中,abac 与 acab 同构,baca 与 caba 同构,形成两类。
第二次修改后为 aaac,四个循环位移两两不同构。
样例 2:两次修改后的字符串分别为 cbc 和 ccc。
本题各子任务单独计分。须通过某子任务包含的所有测试点,方可获得该子任务的分数。
| 子任务编号 | 分数 | ||
|---|---|---|---|
对于 的数据,,,。 中的字符及每次修改中的 均为小写英文字母。