最长公共前缀
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

给定  个仅由小写英文字母组成的字符串是S1,S2,…,Sn

对于两个字符串 ,记它们的最长公共前缀长度为 

现在有  组询问。每组询问给出两个整数 ,你需要求出所有满足  的字符串对  的  之和

输入描述:

第一行两个整数 n,q,分别表示字符串个数和询问个数。

接下来 n 行,第 i 行一个字符串 si

接下来 q 行,每行两个整数 l,r,表示一组询问。

  • 对于 100% 的数据,1n10^41q5×10^31si50,所有字符串仅由小写英文字母组成,且所有字符串长度之和不超过 2×10^51lrn

输出描述:

对于每组询问,输出一行一个整数,表示对应区间内所有无序字符串对的最长公共前缀长度之和。


示例1

输入

复制
4 3
ab
abc
ac
b
1 2
1 3
2 4

输出

复制
2
4
1
示例2

输入

复制
5 3
aaa
aa
aab
ab
b
1 3
2 4
1 5

输出

复制
6
4
9