import sys

counts = {}

for line in sys.stdin.readlines():
	cols = line.split()
	cls = cols[-1]
	bm = cols[0]
	class_counts = counts.get(bm, {})
	counts[bm] = class_counts
	class_counts[cls] = class_counts.get(cls, 0) + 1

keys = sorted(counts.keys())

sys.stdout.write('\\bgroup\\def\\arraystretch{1.5}')
sys.stdout.write('\\setlength{\\tabcolsep}{3.3pt}')
sys.stdout.write('''\\begin{tabular}{|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|}
\hline
''')
sys.stdout.write('& ' + ' & '.join('\\rotatebox{90}{\\small %s\\,}' % key for key in keys) + '\\\\\n')

def fmt_int(x):
	if x: return str(x)
	else: return '-'

sys.stdout.write('\\hline\n')
for cls in ('Linear', 'Structured', 'Reducible', 'Irreducible'):
#	sys.stdout.write('\\hline\n')
	sys.stdout.write('{\\small \\rule{0pt}{1.1em}%s}& ' % cls + ' & '.join(fmt_int(counts[key].get(cls, 0)) for key in keys) + '\\\\\n')

sys.stdout.write('\\hline\n')
sys.stdout.write('{\\small \\rule{0pt}{1.1em}Total}& ' + ' & '.join(fmt_int(counts[key].get('Linear', 0) + counts[key].get('Structured', 0) + counts[key].get('Reducible', 0) + counts[key].get('Irreducible', 0)) for key in keys) + '\\\\\n')
sys.stdout.write('\\hline\n')
sys.stdout.write('\\end{tabular}\n')
sys.stdout.write('\\egroup')
