会编程的老师
时间限制:C/C++/Rust/Pascal 3秒,其他语言6秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

会编程的老师为了展现自己的技术让 m_rd 出一道题让他来做,m_rd 出了一道这样的题:

给定一个只包含 $9$ 种字母 ($\texttt{P,Q,Y,S,Z,T,M,N,B}$) 的字符串 $s$

现在给定 $Q$ 次询问,每次询问再给定一个字符串 $x_i$,在 $s$ 中寻找一个最长的子串,使得该子串满足 $x_i$ 中所有字母恰好出现一次 (其他字母出现次数无限制),输出最长长度。

会编程的老师并不会做这个问题,所以来找你来解决这个问题。

输入描述:

输入的第一行包含两个正整数 n, Q (1 \le n \le 10 ^ 4, 1 \le Q \le 512)

输入的第二行包含一个字符串 s (|s| = n)

接下来 Q 行每行包含一个字符串 x_i (1 \le |x_i| \le 9)

数据保证 x_i 中所有字母均不同且是 \{\texttt{P,Q,Y,S,Z,T,M,N,B}\} 的子集。

输出描述:

输出 Q 行,每行输出最长长度。
示例1

输入

复制
11 3
PPPQQQYYYNB
PQY
QNB
QY

输出

复制
0
6
2

说明

第二次询问的最长子串为 \texttt{

第三次询问的最长子串为 \texttt{