幸运字符
题号:NC282071
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

现在给定你一个字符串。小Y有一个幸运字符,他认为含有这个幸运字符的字符串是好的。

现在给你一个简单的问题。小Y会有q次询问,每次询问会有必须包含的位置要求,你的任务是在包含这个位置的前提下,选出一段最短的连续子串,使得这个子串中含有小Y所指定的幸运字符。

输入描述:

第一行两个整数n, q (1 \le n, q \le 10^5),表示字符串长度为n,一共有q次询问。另有一个字符ch,表示连续子串中需要包含的幸运字符ch。该字符一定是一个小写英文字母。

第二行一个长度为n的字符串。字符串中的位置从1开始计数。

接下来q行,每行一个正整数pos,保证1 \le pos \le n,你的任务是对每次询问的pos给出最短的连续子串的长度,使得它含有小Y所指定的幸运字符。若不存在满足要求的选取方法输出-1。

输出描述:

q行,依次对应每个询问下的答案。
示例1

输入

复制
5 3 a
abacd
1
2
5

输出

复制
1
2
3
示例2

输入

复制
5 1 e
abacd
3

输出

复制
-1