#CF163E. e-Government

e-Government

e-Government

  • 时间限制:1 秒
  • 内存限制:256 MiB

题目描述

来自 Embezzland 的最强的程序员齐聚一堂,为开发项目“电子政府”的一部分——一个自动收集、分析新闻数据的统计系统而竞争。

所有的 kk 个市民都有可能成为 Embezzland 政府的成员。市民的名字分别为 a1,a2,,aka_1,a_2,\cdots,a_k。所有的名字都是不同的。初始时所有 kk 个市民都是政府的成员。系统需要支持以下操作:

  • 让市民 aia_i 加入政府。
  • 让市民 aia_i 退出政府。
  • 给出一段报纸上的文本,计算其政治相关性。具体地,对每一名当前在政府中的市民,统计他的名字作为文本的子串出现了多少次。文本的政治相关性是所有政府成员名字出现次数的和。

你要实现这个系统。

输入格式

第一行两个整数 n,k(1n,k105)n,k(1\le n,k\le 10^5)nn 为接下来的询问个数。
接下来 kk 行,每行一个由小写字母构成的字符串 aia_i
接下来 nn 行,每行一个询问。前两类操作分别以 +- 开头,后面无空格地紧跟着一个整数 ii,表示操作市民的编号;第三类操作以 ? 开头,后面无空格地紧跟着一个小写字母构成的字符串,表示询问文本。

保证所有输入的字符串——名字和文本均由小写字母组成且非空。所有名字长度和 106\le 10^6,所有询问文本长度和 106\le 10^6

有的操作会让你把一个已经在政府中的市民加入政府,或让你把一个不在政府中的市民移除政府。请忽略这些操作。

输出格式

对于每个询问,输出一行一个整数表示答案。

样例输入 1

7 3
a
aa
ab
?aaab
-2
?aaab
-3
?aaab
+2
?aabbaa

样例输出 1

6
4
3
6

数据范围

  • 1n,k1051\le n,k\le 10^5
  • 所有姓名互不相同,且姓名总长度不超过 10610^6
  • 所有询问文本的总长度不超过 10610^6
  • 姓名与询问文本均为非空小写英文字母串。
  • 重复加入已在政府中的成员或移除已不在政府中的成员时,忽略该操作。