#include <iostream>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <map>
#include <vector>
#include <ctype.h>
using namespace std;
map<string, bool> list;
vector<int> vec;
int num[30];
int n,m;
string temp;
char s[30];
char str[30][1000];
int main()
{
int cnt = 1;
while(~scanf("%d%d",&n ,&m) && n && m)
{
list.clear();
getchar();
vec.clear();
memset(num, 0, sizeof(num));
for( int i = 0; i<n; i++)
{
gets(s);
for( int j = 0; s[j] != '\0'; j++)
s[j] = tolower(s[j]);
list[s] = true;
}
for( int j = 0; j<m; j++)
{
gets(str[j]);
int len = strlen(str[j]);
temp.clear();
for( int i = 0; i<len; i++)
{
if(isalpha(str[j][i]))
temp += tolower(str[j][i]);
else
{
if(list[temp])
num[j]++;
temp.clear();
}
}
}
int maxn = 0;
for( int i = 0; i< m; i++)
{
if(maxn <= num[i])
{
if( maxn < num[i])
{
vec.clear();
maxn = num[i];
vec.push_back(i);
}
else
vec.push_back(i);
}
}
printf("Excuse Set #%d\n",cnt++);
for( int i = 0; i < vec.size(); i++)
cout<<str[vec[i]]<<endl;
printf("\n");
}
}
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <map>
#include <vector>
#include <ctype.h>
using namespace std;
map<string, bool> list;
vector<int> vec;
int num[30];
int n,m;
string temp;
char s[30];
char str[30][1000];
int main()
{
int cnt = 1;
while(~scanf("%d%d",&n ,&m) && n && m)
{
list.clear();
getchar();
vec.clear();
memset(num, 0, sizeof(num));
for( int i = 0; i<n; i++)
{
gets(s);
for( int j = 0; s[j] != '\0'; j++)
s[j] = tolower(s[j]);
list[s] = true;
}
for( int j = 0; j<m; j++)
{
gets(str[j]);
int len = strlen(str[j]);
temp.clear();
for( int i = 0; i<len; i++)
{
if(isalpha(str[j][i]))
temp += tolower(str[j][i]);
else
{
if(list[temp])
num[j]++;
temp.clear();
}
}
}
int maxn = 0;
for( int i = 0; i< m; i++)
{
if(maxn <= num[i])
{
if( maxn < num[i])
{
vec.clear();
maxn = num[i];
vec.push_back(i);
}
else
vec.push_back(i);
}
}
printf("Excuse Set #%d\n",cnt++);
for( int i = 0; i < vec.size(); i++)
cout<<str[vec[i]]<<endl;
printf("\n");
}
}