{"trustable":false,"prependHtml":"\u003cstyle type\u003d\u0027text/css\u0027\u003e\n .input, .output {\n border: 1px solid #888888;\n }\n .output {\n margin-bottom: 1em;\n position: relative;\n top: -1px;\n }\n .output pre, .input pre {\n background-color: #EFEFEF;\n line-height: 1.25em;\n margin: 0;\n padding: 0.25em;\n }\n \u003c/style\u003e\n \u003clink rel\u003d\"stylesheet\" href\u003d\"//codeforces.org/s/96598/css/problem-statement.css\" type\u003d\"text/css\" /\u003e\u003cscript\u003e window.katexOptions \u003d { disable: true }; \u003c/script\u003e\n\u003cscript type\u003d\"text/x-mathjax-config\"\u003e\n MathJax.Hub.Config({\n tex2jax: {\n inlineMath: [[\u0027$$$\u0027,\u0027$$$\u0027], [\u0027$\u0027,\u0027$\u0027]],\n displayMath: [[\u0027$$$$$$\u0027,\u0027$$$$$$\u0027], [\u0027$$\u0027,\u0027$$\u0027]]\n }\n });\n\u003c/script\u003e\n\u003cscript type\u003d\"text/javascript\" async src\u003d\"https://mathjax.codeforces.org/MathJax.js?config\u003dTeX-AMS_HTML-full\"\u003e\u003c/script\u003e","sections":[{"title":"","value":{"format":"HTML","content":"\u003cp\u003e实时检索是一个业务中经常需要面对的场景,下面我们希望实现一个可以实时增删的实时检索系统:\u003c/p\u003e\n\u003cp\u003e1、 建库请求:在检索系统中插入一个字符串;\u003c/p\u003e\n\u003cp\u003e2、 删库请求:在检索系统中删除一个字符串;\u003c/p\u003e\n\u003cp\u003e3、查询请求:求对于请求的字符串包含了现在检索系统中的字符串多少次;特别地,对于一个已经插入的字符串如果多次出现在当前查询字符串中,应计算作多次而非一次。\u003c/p\u003e"}},{"title":"Input","value":{"format":"HTML","content":"\u003cp\u003e第一行包括一个整数n(1\u003c\u003dn\u003c\u003d3*10^5)\u003c/p\u003e\n\u003cp\u003e后面共n行,每行空格分割的整数tp和string,其中tp为1,2,3对应上述三种操作,string为请求中的字符串,为了建行字符串处理,字符串全部为小写字母组成,所有请求字符串总长度不超过3*10^5\u003c/p\u003e\n\u003cp\u003e注意,这是一个真实场景,你不能将所有请求一起获得后批量操作。当出现查询请求时,程序必须从标准输出中输出查询结果后才能从标准输入中获得下一次请求,这里需要注意清空输出缓存,相关语言建议:\u003c/p\u003e\n\u003cp\u003ePython :stdout.flush()\u003c/p\u003e\n\u003cp\u003eC++:fflush(stdout) or cout.flush()\u003c/p\u003e\n\u003cp\u003ePHP:ob_flush(); flush();\u003c/p\u003e\n\u003cp\u003eJava:System.out.flush() \u003c/p\u003e"}},{"title":"Output","value":{"format":"HTML","content":"对于每条查询操作,输出查询结果"}},{"title":"Examples","value":{"format":"HTML","content":"\u003cdiv class\u003d\"sample-test\"\u003e\n \u003cdiv class\u003d\"input\"\u003e\n \u003cdiv class\u003d\"title\"\u003e\n Input\n \u003c/div\u003e\n \u003cpre\u003e5\u003cbr\u003e1 xyz\u003cbr\u003e3 xyzxyz\u003cbr\u003e2 xyz\u003cbr\u003e1 xyx\u003cbr\u003e3 xyxyxyz\u003cbr\u003e\u003c/pre\u003e\n \u003c/div\u003e\n \u003cdiv class\u003d\"output\"\u003e\n \u003cdiv class\u003d\"title\"\u003e\n Output\n \u003c/div\u003e\n \u003cpre\u003e2\u003cbr\u003e2\u003cbr\u003e\u003c/pre\u003e\n \u003c/div\u003e\n \u003cdiv class\u003d\"input\"\u003e\n \u003cdiv class\u003d\"title\"\u003e\n Input\n \u003c/div\u003e\n \u003cpre\u003e10\u003cbr\u003e1 bcd\u003cbr\u003e1 cde\u003cbr\u003e1 bcde\u003cbr\u003e3 bcdebcde\u003cbr\u003e2 bcde\u003cbr\u003e3 bcdebcde\u003cbr\u003e2 cde\u003cbr\u003e3 bcde\u003cbr\u003e2 bcd\u003cbr\u003e3 abcd\u003cbr\u003e\u003c/pre\u003e\n \u003c/div\u003e\n \u003cdiv class\u003d\"output\"\u003e\n \u003cdiv class\u003d\"title\"\u003e\n Output\n \u003c/div\u003e\n \u003cpre\u003e6\u003cbr\u003e4\u003cbr\u003e1\u003cbr\u003e0\u003cbr\u003e\u003c/pre\u003e\n \u003c/div\u003e\n\u003c/div\u003e"}}]}