#include<iostream>
#include<algorithm>
#include<vector>
#include<map>
#include<string.h>
using namespace std;
struct record{
char number[10];
int time,flag=0;
};
bool cmp(record a,record b)
{
if(strcmp(a.number,b.number)!=0) return strcmp(a.number,b.number)<0;
else return a.time<b.time;
}
bool cmpTime(record a,record b)
{
return a.time<b.time;
}
int main()
{
int n,k,i,j;
int hour,minute,second;
int index=0,time,Ltime=-1;
char check[5];
map<string,int> mp;
cin>>n>>k;
record rec[n];
for(i=0;i<n;i++){
scanf("%s%d:%d:%d%s",rec[i].number,&hour,&minute,&second,check);
rec[i].time=3600*hour+60*minute+second;
rec[i].flag=strcmp(check,"in")==0?1:-1;
}
sort(rec,rec+n,cmp);
vector<record> vi;
for(i=0;i<n-1;i++){
if(strcmp(rec[i].number,rec[i+1].number)==0
&&rec[i].flag==1&&rec[i+1].flag==-1){
vi.push_back(rec[i]);
vi.push_back(rec[i+1]);
mp[rec[i].number]+=(rec[i+1].time-rec[i].time);
if(mp[rec[i].number]>Ltime) Ltime=mp[rec[i].number];
}
}
sort(vi.begin(),vi.end(),cmpTime);
vector<int> cnt(vi.size());
for(i=0;i<vi.size();i++){
if(i==0) cnt[i]+=vi[i].flag;
else cnt[i]=cnt[i-1]+vi[i].flag;
}
for(i=0;i<k;i++){
scanf("%d:%d:%d",&hour,&minute,&second);
time=3600*hour+60*minute+second;
for(j=index;j<vi.size();j++){
if(vi[j].time>time){
printf("%d\n",cnt[j-1]);
break;
}else if(j==vi.size()-1){
printf("%d\n",cnt[j]);
}
}
index=j;
}
for(map<string,int>::iterator it=mp.begin();it!=mp.end();it++){
if(it->second==Ltime) cout<<it->first<<' ';
}
printf("%02d:%02d:%02d\n",Ltime/3600,(Ltime%3600)/60,Ltime%60);
return 0;
}