import java.util.Scanner;
import java.util.HashSet;
import java.util.Set;
public class Main {
public static void main(String[] args) {
// 创建扫描器对象,用于读取输入数据
Scanner in = new Scanner(System.in);
// 循环处理多组测试用例(当输入中存在下一个整数时继续)
while (in.hasNextInt()) {
// 读取n:字符串需要处理的长度(题目中的n)
int a = in.nextInt();
// 读取m:偏爱字符的数量(题目中的m)
int b = in.nextInt();
// 创建集合存储所有偏爱字符,利用HashSet实现O(1)时间复杂度的包含判断
Set<Character> preferredChars = new HashSet<>();
// 循环读取m个偏爱字符并添加到集合中
for (int i = 0; i < b; i++) {
// 读取输入的字符串并取第一个字符(因为输入的是单个字符,用空格分隔)
preferredChars.add(in.next().charAt(0));
}
// 消耗掉输入缓冲区中残留的换行符,避免影响后续nextLine()读取完整字符串
in.nextLine();
// 读取原始字符串s
String s = in.nextLine();
// 记录上一个偏爱字符在字符串中的位置,初始值-1表示尚未找到任何偏爱字符
int lastPreferredIndex = -1;
// 创建结果字符数组,长度与原始字符串一致,用于存储替换后的结果
char[] result = new char[s.length()];
// 遍历字符串的前a个字符(题目要求处理的长度)
for (int currentIndex = 0; currentIndex < a; currentIndex++) {
// 判断当前位置的字符是否为偏爱字符
if (preferredChars.contains(s.charAt(currentIndex))) {
// 情况1:第一次遇到偏爱字符(之前没有记录过偏爱字符位置)
if (lastPreferredIndex < 0) {
// 将从字符串开头到当前偏爱字符位置前的所有字符
// 替换为当前偏爱字符(因为左侧没有其他偏爱字符)
for (int j = 0; j < currentIndex; j++) {
result[j] = s.charAt(currentIndex);
}
} else {
// 情况2:不是第一次遇到偏爱字符,处理两个偏爱字符之间的区域
// 计算中间位置,用于划分两个偏爱字符的影响范围
// 公式含义:两位置间距的一半向上取整,加上前偏爱字符位置
int midPosition = (currentIndex - lastPreferredIndex) / 2 + lastPreferredIndex + 1;
// 中间位置左侧(包含lastPreferredIndex,不包含midPosition)
// 替换为上一个偏爱字符(距离更近或相同距离时选左侧)
for (int j = lastPreferredIndex; j < midPosition; j++) {
result[j] = s.charAt(lastPreferredIndex);
}
// 中间位置及右侧(包含midPosition,不包含currentIndex)
// 替换为当前偏爱字符(距离更近)
for (int j = midPosition; j < currentIndex; j++) {
result[j] = s.charAt(currentIndex);
}
}
// 当前位置是偏爱字符,直接保留该字符到结果中
result[currentIndex] = s.charAt(currentIndex);
// 更新上一个偏爱字符的位置为当前位置
lastPreferredIndex = currentIndex;
}
}
// 处理最后一个偏爱字符右侧的区域(如果存在)
// 条件:存在偏爱字符(lastPreferredIndex > -1),且最后一个偏爱字符不在字符串末尾
if (lastPreferredIndex > -1 && lastPreferredIndex != a - 1) {
// 将从最后一个偏爱字符位置到字符串末尾(前a个字符内)的所有字符
// 替换为最后一个偏爱字符(因为右侧没有其他偏爱字符)
for (int j = lastPreferredIndex; j < a; j++) {
result[j] = s.charAt(lastPreferredIndex);
}
}
// 将结果字符数组转换为字符串并输出
System.out.println(result);
}
// 关闭扫描器,释放资源
in.close();
}
}