import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Scanner; public class prog { public static void main (String[] args) throws java.lang.Exception { Scanner scanner = new Scanner(System.in); String letterSeq = scanner.nextLine(); int[] letters = new int[60]; for (int i = 0; i < letterSeq.length(); i++) { letters['z'-letterSeq.charAt(i)]++; } int nrOfWords = scanner.nextInt(); List words = new ArrayList(); for (int i = 0; i < nrOfWords; i++) { String word = scanner.nextLine(); if(word.length() <= letterSeq.length() && canBeFormed(letters, word)){ words.add(word); } } Collections.sort(words); for (int i = 0; i < words.size(); i++) { System.out.println(words.get(i)); } scanner.close(); } private static boolean canBeFormed(int[] letters, String word) { int[] wLetters = new int[60]; for (int i = 0; i < word.length(); i++) { char c = word.charAt(i); wLetters['z'-c]++; if(wLetters['z'-c] > letters['z'-c]){ return false; } } return true; } }