#include <iostream>
#include <string>
#include <iomanip>
#include <algorithm>
using namespace std;

struct candidates {
	string name;
	double numb;
};

bool c(candidates x, candidates y)
{
	return x.numb > y.numb;
}

int main() {
	int candidateNum, ballotNum;
	cin >> candidateNum >> ballotNum;
	candidates* candidate = new candidates[candidateNum+1];
	string s = "";
	for (int i = 0; i < candidateNum; i++)
	{
		cin >> s;
		candidate[i].name = s;
		candidate[i].numb = 0;
	}
	candidate[candidateNum].name = "Invalid";
	candidate[candidateNum].numb = 0;
	int count = 0, num;
	for (int i = 0; i < ballotNum; i++)
	{
		cin >> s;
		count = 0;
		for (int j = 0; j < candidateNum; j++)
		{
			if (s[j] == 'X')
			{
				count++;
				num = j;
			}
			if (isalpha(s[j]) && s[j] != 'X')
				count=2;
		}
		if (count == 1)
		{
			candidate[num].numb++;
		}
		else
			candidate[candidateNum].numb++;

	}
	sort(candidate, candidate + candidateNum,c);
	for (int i = 0; i <= candidateNum; i++)
	{
		cout << fixed << setprecision(2) << candidate[i].name << " " << (candidate[i].numb*100)/ballotNum << "%\n";
	}
	return 0;
}