importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;importjava.util.StringTokenizer;publicclassB18119{staticintN,M,cnt;staticchar[]idx=newchar[2];staticint[]bit;staticintalpha=(1<<27)-1;/// 26개 1비트
staticStrings;publicstaticvoidmain(String[]args)throwsIOException{BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));StringTokenizerst=newStringTokenizer(br.readLine());StringBuildersb=newStringBuilder();N=Integer.parseInt(st.nextToken());M=Integer.parseInt(st.nextToken());bit=newint[N];while(N-->0){s=br.readLine();for(charc:s.toCharArray()){bit[N]|=1<<(c-'a');}// 각 문자열 비트 생성
}while(M-->0){st=newStringTokenizer(br.readLine());charo=st.nextToken().charAt(0);charc=st.nextToken().charAt(0);// and/or 연산을 통해 비트를 켜고 끔
if(o=='1'){alpha&=~(1<<(c-'a'));}else{alpha|=(1<<(c-'a'));}// System.out.println(Integer.toBinaryString(alpha));
cnt=0;// 단어가 전부 있을 경우 연산 그대로 되는 듯
for(inti:bit){if((alpha&i)>=i)cnt++;}sb.append(cnt).append("\n");}System.out.println(sb);}}