相似度查询
题号:NC51374
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

一个字符串与另外一个字符串的相似度定义为:该字符串中在另一个字符串中,顺序出现的字母个数。
如:
ab与adcbc,相似度为2(a出现在第1个位置,b出现在第4个位置)。
abcde与adbcbcd,相似度为4(a出现在第1个位置,b出现在第3个位置,c出现在第4个位置,d出现在第7个位置)。
现在你得到了一个字符串,你很好奇它与其他字符串的相似度是多少。
形式化地讲,给一个母串,长度为n。共m次查询,每次查询给出一个字符串,你可以从母串中选出一个子序列与该串顺序匹配,问可匹配的最长长度。

输入描述:

第一行两个数n,m。表示母串长度和询问个数。
第二行一个长度为n的字符串,即题目中的母串。
接下来m行每行一个字符串S。

输出描述:

共m行。每行一个数表示母串与字符串S_i 的相似度。
示例1

输入

复制
7 1
adbcbcd
abcde

输出

复制
4

备注:

对于全部数据:1\leq n\leq 5000,1\leq m\leq 5000,字符串长度 1\leq len\leq \min\{n,100\}