题号:NC307759
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld
题目描述
给定一个字符串

以及若干组询问,每个询问包含两个区间
)
,
)
,你需要判定

与

去重后有多少个位置上的字符是不同的。
这里的去重指的是每个子串对于每种字符,只保留第一个出现的那个,后续出现的直接丢弃。
例如

在选中区间
![[1,5]](https://www.nowcoder.com/equation?tex=%5B1%2C5%5D)
时,得到子串

,去重后为

,选中区间
![[3,6]](https://www.nowcoder.com/equation?tex=%5B3%2C6%5D)
时得到

,去重后为

。
特别地,两个长度不同的子串中,较长串的多出的部分每个位置都视为不同。
输入描述:
输入第一行包含一个字符串
。
第二行包含一个整数
,表示询问次数。
接下来
行,每行包含四个整数,表示一次询问。
输出描述:
输出共
行,每行一个整数对应每次询问的答案。
示例1
输入
复制
aabcbabacdab
3
1 1 2 2
1 10 6 9
4 7 9 12
备注:
对于 40% 的评测用例,
,
。
对于 60% 的评测用例,
。
对于 100% 的评测用例,
,
,
。