小红的 red 计数
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

小红拿到了一个字符串。她有若干次询问,每次询问:若翻转第l个字符到第r个字符对应的区间,该字符串有多少"red"子序列。
子序列指按原串顺序取若干字母(可以不连续)形成的新字符串。如"rreedd"存在8个"red"子序列。
请注意,每次询问后并不会真正翻转区间!

输入描述:

第一行输入两个正整数n,q,代表字符串长度和询问次数。
第二行输入一个长度为n的、仅由小写字母组成的字符串。
接下来的q行,每行输入两个正整数l,r,代表一次询问。

1\leq n,q \leq 10^5
1\leq l \leq r \leq n

输出描述:

输出q行,每行输出一个整数,代表询问的答案。
示例1

输入

复制
6 2
rreedd
1 2
1 6

输出

复制
8
0