// alex lo // http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=949 import java.util.*; class Cryptoanalysis { public static void main(String[] args) { Scanner inputScanner = new Scanner(System.in); int nLines = inputScanner.nextInt(); inputScanner.nextLine(); TreeMap counter = new TreeMap(); for (char ch = 'A'; ch < 'Z'; ch++) { counter.put(new Character(ch), 0); } for (int i = 0; i < nLines; i++) { String line = inputScanner.nextLine(); for (char ch : line.toCharArray()) { Character theChar = new Character(Character.toUpperCase(ch)); if (counter.containsKey(theChar)) { counter.put(theChar, counter.get(theChar) + 1); } } } Comparator bvc = new ValueComparator(counter); TreeMap sorted_map = new TreeMap(bvc); sorted_map.putAll(counter); for (Character key : sorted_map.keySet()) { Integer value = sorted_map.get(key); if (value > 0) { System.out.println(key + " " + value); } else { break; } } } } class ValueComparator implements Comparator { Map theMap; public ValueComparator(Map arg) { theMap = arg; } @Override public int compare(Character a, Character b) { if (theMap.get(a) < theMap.get(b)) { return 1; } else if (theMap.get(a) == theMap.get(b)) { return a.compareTo(b); } else { return -1; } } }