import java.util.Map; import java.util.Map.Entry; import java.util.Scanner; import java.util.TreeMap; public class Main { public static void main(String[] args) { Scanner cin = new Scanner(System.in); int count = cin.nextInt(); boolean noDuplicates = true; Map<String, Integer> resultMap = new TreeMap<String, Integer>(); for (int i = 0; i < count; i++) { String phoneNum = cin.next(); String result = normalize(phoneNum); int c = 1; if (resultMap.containsKey(result)) { c = resultMap.get(result) + 1; noDuplicates = false; } resultMap.put(result, c); } for (Entry<String, Integer> entry : resultMap.entrySet()) { if (entry.getValue() > 1) { System.out.println(entry.getKey() + " " + entry.getValue()); } } if (noDuplicates) { System.out.println("No duplicates."); } } public static String normalize(String phoneNum) { String trimedStr = phoneNum.replaceAll("-", ""); StringBuilder builder = new StringBuilder(); for (char c : trimedStr.toCharArray()) { char numChar = toNumChar(c); builder.append(numChar); } builder.insert(3, '-'); return builder.toString(); } public static char toNumChar(char c) { if ('0' <= c && c <= '9') { return c; } switch (c) { case 'A': ; case 'B': ; case 'C': return '2'; case 'D': ; case 'E': ; case 'F': return '3'; case 'G': ; case 'H': ; case 'I': return '4'; case 'J': ; case 'K': ; case 'L': return '5'; case 'M': ; case 'N': ; case 'O': return '6'; case 'P': ; case 'R': ; case 'S': return '7'; case 'T': ; case 'U': ; case 'V': return '8'; default: return '9'; } } }