#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
struct stu{
string id;
char dtk[51][4],k[2];
}a[1010];
string s,id;
int da[51],T,n,k;
double tm;
void daan(){
for(int i = 0;i<n;i++){
switch(s[i]){
case 'A':da[i] = 0;break;
case 'B':da[i] = 1;break;
case 'C':da[i] = 2;break;
case 'D':da[i] = 3;break;
}
}
}
int zhuan(int p){
int e = 32768,h = 0;
for(int i = 0;i<16;i++){
if(a[p].id[i]=='1')h+=e;
e/=2;
}
return h;
}
double pg(int w){
double fs = 0;
bool flag = true;
for(int x = 0;x<n;x++){
flag = true;
for(int y = 0;y<4;y++){
if(y==da[x]){
if(a[w].dtk[x][y]=='0')flag = false;
}
else{
if(a[w].dtk[x][y]=='1')flag = false;
}
}
if(flag)fs+=tm;
}
return fs;
}
int main(){
cin>>T>>n>>s;
daan();
int shu,cnt = 0;
tm = 100.0/n;
for(int o = 1;o<=T;o++){
cin>>a[o].id;
shu = zhuan(o);
cin>>a[o].k;
if(shu<=10000&&shu>=1)printf("ID:%d\n",shu);
for(int i = 0;i<n;i++){
for(int j = 0;j<4;j++){
cin>>a[o].dtk[i][j];
}
}
if(shu>10000||shu<1){
printf("Wrong ID\n");
continue;
}
if((a[o].k[0]=='1'&&a[o].id[15]=='1')||(a[o].k[0]==a[o].k[1])||(a[o].k[1]=='1'&&a[o].id[15]=='0'))printf("Type Incorrect\n");
else printf("Type Correct\n");
printf("%.1lf\n",pg(o));
}
return ~~(0-0);
}
WA······