별표 하나를 포함한 각 패턴에서 별표를 비어 있을 수 있는 임의 문자열로 바꾸어 만들 수 있는 단어가 몇 개인지 구합니다.
낙원이는 OOP(객체 지향 프로그래밍) 연구실에서 연구하느라 바빠서 데이터를 정리할 시간이 없다. 남은 일은 정해진 패턴과 일치하는 데이터가 몇 개인지 세는 것이다.
단어 NNN개로 이루어진 집합과 패턴 QQQ개가 있다. 각 패턴은 알파벳 소문자 a부터 z까지와 별표(*) 한 개로만 이루어진다.
패턴이 어떤 단어를 감싼다는 것은, 패턴의 별표를 알파벳 소문자로 이루어진 문자열 하나로 바꿨을 때 그 단어와 완전히 같아진다는 뜻이다. 별표 자리에 빈 문자열을 넣어도 된다.
각 패턴이 감싸는 단어가 몇 개인지 세어 출력하자.
첫째 줄에 단어의 개수 NNN과 패턴의 개수 QQQ가 주어진다. (1≤N,Q≤100,0001 \le N, Q \le 100{,}0001≤N,Q≤100,000)
다음 NNN개 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 모두 알파벳 소문자로만 이루어진다.
다음 QQQ개 줄에 패턴이 한 줄에 하나씩 주어진다. 패턴은 모두 알파벳 소문자와 별표(*) 한 개로만 이루어진다.
입력에 등장하는 글자 수의 합은 3,000,0003{,}000{,}0003,000,000을 넘지 않는다.
QQQ개의 줄을 출력한다. kkk번째 줄에는 kkk번째 패턴이 감싸는 단어의 개수를 출력한다.