联想标语
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

为了感谢\textbf{Lenovo}集团对此次赛事的赞助,lbromine决定设计一些关于\textbf{Lenovo}的标语,这些标语由一些小写字母组成。

而CN_Amuzi觉得lbromine设计的标语的一些前缀太过老套,于是他决定删除这些前缀,同时他认为标语中至少应该含有一个 子串。

于是CN_Amuzi每次询问会给出一个字符串 t,他会将现在所有标语删掉与 t 相同的前缀,比如:他给出的字符串 t,标语 会被改为 ,而标语 没有和 相同的前缀,则不会改变,他想知道,\textbf{当前已经设计好的标语中},经过修改后还有多少个标语含有至少一个 子串。

注意:CN_Amuzi的询问并不会真的修改lbromine的标语,即每次询问都是独立的,CN_Amuzi会在询问后将所有标语复原。\textbf{注意:题目测试数据保证必有至少一次询问!}

输入描述:

输入第 1 行包含一个整数 n,表示一共有 n 个标语或询问。

输入第 2\sim n+1 行每行包含一个整数 u 和一个字符串 t

如果 u=1,则表示lbromine新设计了一个标语。

如果 u=2,则表示CN_Amuzi的一个询问。

输出描述:

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

输入

复制
5
1 ilovelenovo
1 goodlenovo
2 ilove
1 ilovelenovolenovo
2 ilovelen

输出

复制
2
2

备注:

对于所有测试数据,2\leq n\leq 10^5,所有输入字符串的总长度不超过 10^6