#include<iostream>
#include<cstdio>
#include<string>
#include<string.h>
#include<map>
#include<vector>
#include<iterator>
using namespace std;

bool isContain(string str1,string str2){
    for(unsigned int i=1;i<str2.length();i++){
        if(str1.find(str2[i])==string::npos){
            return false;
        }
    }
    return true;
}

string compareString(string str1,string str2){
    string str="";
    for(unsigned int i=1;i<str1.length();i++){
        if(str2.find(str1[i])==string::npos){
            str+=str1[i];
        }
    }
    for(unsigned int i=1;i<str2.length();i++){
        if(str1.find(str2[i])==string::npos){
            str+=str2[i];
        }
    }
    return str;
}

int main(){
    int n,m;
    cin>>n>>m;
    string exams[m];
    map<char,int> wrongs[m];
    vector<vector<string>> stus;
    getline(cin,exams[0]);
    for(int i=0;i<m;i++){
        getline(cin,exams[i]);
    }
    for(int i=0;i<n;i++){
        string str;
        getline(cin,str);
        vector<string> stu;
        for(unsigned int j=0;j<str.length();j++){
            if(str[j]=='('){
                for(unsigned int k=j+1;k<str.length();k++){
                    if(str[k]==')'){
                        string ans=str.substr(j+1,k-j-1);
                        stu.push_back(ans);
                        break;
                    }
                }
            }
        }
        stus.push_back(stu);
    }
    double scores[n]={0};
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            string ans1=exams[j].substr(4,exams[j].length()-4);
            string ans2=stus[i][j];
            if(ans1==ans2){
                scores[i]+=exams[j][0]-'0';
            }else{
                string str=compareString(ans1,ans2);;
                for(unsigned int k=0;k<str.length();k++){
                    char a=str[k];
                    wrongs[j][a]++;
                }
                if(isContain(ans1,ans2)){
                    scores[i]+=(exams[j][0]-'0')*1.0/2;
                }
            }
        }
    }
    for(int i=0;i<n;i++){
        printf("%.1f\n",scores[i]);
    }
    int max=0;
    for(int i=0;i<m;i++){
        if(wrongs[i].size()!=0){
            map<char,int>::iterator it;
            it=wrongs[i].begin();
            while(it!=wrongs[i].end()){
                if(it->second>max){
                    max=it->second;
                }
                it++;
            }
        }
    }
    if(max==0){
        printf("Too simple");
    }else{
        for(int i=0;i<m;i++){
            map<char,int>::iterator it;
            it=wrongs[i].begin();
            while(it!=wrongs[i].end()){
                if(it->second==max){
                    printf("%d %d-%c\n",it->second,i+1,it->first);
                }
                it++;
            }
        }
    }
    return 0;
}