#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int T, n, xlen, ans;
string s, x;
char a1, a2;
string an[57];
inline int num_check(string a)
{
int len = a.size();
if(len != 16) return -1;
if(a[0] == '1' || a[1] == '1') return -1;
int num = 0;
for(int i = 0; i < len; i++)
if(a[i] == '1') num += pow(2, len - i - 1);
return num;
}
inline int type_check(char a, char b)
{
if(a == '1' && x[xlen - 1] == '0') return 1;
if(b == '1' && x[xlen - 1] == '1') return 1;
return -1;
}
int main()
{
cin >> T >> n;
getchar();
cin >> s;
while(T--)
{
bool flag = 0;
double score = 0;
cin >> x;
xlen = x.size();
ans = num_check(x);
if(ans == -1 || ans == 0)
{
cout << "Wrong ID" << endl;
flag = 1;
}
else cout << "ID: " << ans << endl;
cin >> a1 >> a2;
if(!flag)
{
ans = type_check(a1, a2);
if(ans == -1)
{
cout << "Type Incorrect" << endl;
}
else cout << "Type Correct" << endl;
}
getchar();
for(int i = 0; i < n; i++)
{
cin >> an[i];
int cnt = 0;
for(int j = 0; j < an[i].size(); j++)
if(an[i][j] == '1') cnt++;
if(cnt > 1) an[i] = "0000";
}
if(!flag)
{
double one = 100.0 / n;
for(int i = 0; i < n; i++)
if(an[i][s[i] - 'A'] == '1') score += one;
printf("%.1lf\n", score);
}
if(T >= 1) cout << endl;
}
}