OOP

별표 하나를 포함한 각 패턴에서 별표를 비어 있을 수 있는 임의 문자열로 바꾸어 만들 수 있는 단어가 몇 개인지 구합니다.

보통7문자열 매칭해시맵트라이아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

낙원이는 OOP(객체 지향 프로그래밍) 연구실에서 연구하느라 바빠서 데이터를 정리할 시간이 없다. 남은 일은 정해진 패턴과 일치하는 데이터가 몇 개인지 세는 것이다.

단어 NN개로 이루어진 집합과 패턴 QQ개가 있다. 각 패턴은 알파벳 소문자 a부터 z까지와 별표(*) 한 개로만 이루어진다.

패턴이 어떤 단어를 감싼다는 것은, 패턴의 별표를 알파벳 소문자로 이루어진 문자열 하나로 바꿨을 때 그 단어와 완전히 같아진다는 뜻이다. 별표 자리에 빈 문자열을 넣어도 된다.

각 패턴이 감싸는 단어가 몇 개인지 세어 출력하자.

입력

첫째 줄에 단어의 개수 NN과 패턴의 개수 QQ가 주어진다. (1N,Q100,0001 \le N, Q \le 100{,}000)

다음 NN개 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 모두 알파벳 소문자로만 이루어진다.

다음 QQ개 줄에 패턴이 한 줄에 하나씩 주어진다. 패턴은 모두 알파벳 소문자와 별표(*) 한 개로만 이루어진다.

입력에 등장하는 글자 수의 합은 3,000,0003{,}000{,}000을 넘지 않는다.

출력

QQ개의 줄을 출력한다. kk번째 줄에는 kk번째 패턴이 감싸는 단어의 개수를 출력한다.