import java.util.*;
class CharBag implements Comparable<CharBag> {
public static int CHAR_POWER = 256;
private int[] map = new int[CHAR_POWER];
private int count = 0;
private String word;
private CharBag copy;
CharBag() {}
CharBag(String word) {
this.word = word;
for (int i = 0; i < word.length(); i++) {
this.add(word.charAt(i));
}
copy = new CharBag();
copy.word = word;
}
public String getWord() {
return word;
}
public int getCount() {
return count;
}
public void add(char c) {
map[(int) c]++;
count++;
}
public boolean remove(char c) {
int index = (int) c;
if (map[index] > 0) {
map[index]--;
count--;
return true;
} else {
return false;
}
}
public boolean checkAnagramDestructive(String anagram) {
for (int i = 0; i < anagram.length(); i++) {
char c = anagram.charAt(i);
if (!this.remove(c)) {
return false;
}
}
return this.count == 0;
}
private void makeCopy() {
copy.count = count;
System.arraycopy(map, 0, copy.map, 0, CHAR_POWER);
}
public boolean checkAnagram(String anagram) {
makeCopy();
return copy.checkAnagramDestructive(anagram);
}
@Override
public int compareTo(CharBag o) {
return Integer.compare(this.count, o.count);
}
}
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String str1 = scanner.nextLine();
String[] words = str1.split("\\s+");
List<CharBag> bags = new ArrayList<>();
for (String word : words) {
bags.add(new CharBag(word));
}
String str2 = scanner.nextLine();
List<CharBag> matchingBags = new ArrayList<>(words.length);
List<String> anagrams = new ArrayList<>(words.length);
List<String> resultWords = new ArrayList<>(words.length);
while (!(str2.isEmpty() || bags.isEmpty())) {
for (CharBag bag : bags) {
if (bag.checkAnagram(str2.substring(0, bag.getCount()))) {
matchingBags.add(bag);
}
}
if (matchingBags.isEmpty()) {
System.out.println("Does not compute.");
return;
}
CharBag bagWithMaxLength = Collections.min(matchingBags);
int split = bagWithMaxLength.getCount();
anagrams.add(str2.substring(0, split));
resultWords.add(bagWithMaxLength.getWord());
str2 = str2.substring(split);
bags.remove(bagWithMaxLength);
matchingBags.clear();
}
if (!str2.isEmpty()) {
System.out.println("Too few words!");
} else if (!bags.isEmpty()) {
System.out.println("Too many words!");
} else {
for (String ana : anagrams) {
System.out.print(ana + " ");
}
System.out.println();
for (String w : resultWords) {
System.out.print(w + " ");
}
}
}
}
aW1wb3J0IGphdmEudXRpbC4qOwoKY2xhc3MgQ2hhckJhZyBpbXBsZW1lbnRzIENvbXBhcmFibGU8Q2hhckJhZz4gewogICAgcHVibGljIHN0YXRpYyBpbnQgQ0hBUl9QT1dFUiA9IDI1NjsKCiAgICBwcml2YXRlIGludFtdIG1hcCA9IG5ldyBpbnRbQ0hBUl9QT1dFUl07CiAgICBwcml2YXRlIGludCBjb3VudCA9IDA7CiAgICBwcml2YXRlIFN0cmluZyB3b3JkOwogICAgcHJpdmF0ZSBDaGFyQmFnIGNvcHk7CgogICAgQ2hhckJhZygpIHt9CgogICAgQ2hhckJhZyhTdHJpbmcgd29yZCkgewogICAgICAgIHRoaXMud29yZCA9IHdvcmQ7CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB3b3JkLmxlbmd0aCgpOyBpKyspIHsKICAgICAgICAgICAgdGhpcy5hZGQod29yZC5jaGFyQXQoaSkpOwogICAgICAgIH0KICAgICAgICBjb3B5ID0gbmV3IENoYXJCYWcoKTsKICAgICAgICBjb3B5LndvcmQgPSB3b3JkOwogICAgfQoKICAgIHB1YmxpYyBTdHJpbmcgZ2V0V29yZCgpIHsKICAgICAgICByZXR1cm4gd29yZDsKICAgIH0KCiAgICBwdWJsaWMgaW50IGdldENvdW50KCkgewogICAgICAgIHJldHVybiBjb3VudDsKICAgIH0KCiAgICBwdWJsaWMgdm9pZCBhZGQoY2hhciBjKSB7CiAgICAgICAgbWFwWyhpbnQpIGNdKys7CiAgICAgICAgY291bnQrKzsKICAgIH0KCiAgICBwdWJsaWMgYm9vbGVhbiByZW1vdmUoY2hhciBjKSB7CiAgICAgICAgaW50IGluZGV4ID0gKGludCkgYzsKICAgICAgICBpZiAobWFwW2luZGV4XSA+IDApIHsKICAgICAgICAgICAgbWFwW2luZGV4XS0tOwogICAgICAgICAgICBjb3VudC0tOwogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBib29sZWFuIGNoZWNrQW5hZ3JhbURlc3RydWN0aXZlKFN0cmluZyBhbmFncmFtKSB7CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhbmFncmFtLmxlbmd0aCgpOyBpKyspIHsKICAgICAgICAgICAgY2hhciBjID0gYW5hZ3JhbS5jaGFyQXQoaSk7CiAgICAgICAgICAgIGlmICghdGhpcy5yZW1vdmUoYykpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gdGhpcy5jb3VudCA9PSAwOwogICAgfQoKICAgIHByaXZhdGUgdm9pZCBtYWtlQ29weSgpIHsKICAgICAgICBjb3B5LmNvdW50ID0gY291bnQ7CiAgICAgICAgU3lzdGVtLmFycmF5Y29weShtYXAsIDAsIGNvcHkubWFwLCAwLCBDSEFSX1BPV0VSKTsKICAgIH0KCiAgICBwdWJsaWMgYm9vbGVhbiBjaGVja0FuYWdyYW0oU3RyaW5nIGFuYWdyYW0pIHsKICAgICAgICBtYWtlQ29weSgpOwogICAgICAgIHJldHVybiBjb3B5LmNoZWNrQW5hZ3JhbURlc3RydWN0aXZlKGFuYWdyYW0pOwogICAgfQoKICAgIEBPdmVycmlkZQogICAgcHVibGljIGludCBjb21wYXJlVG8oQ2hhckJhZyBvKSB7CiAgICAgICAgcmV0dXJuIEludGVnZXIuY29tcGFyZSh0aGlzLmNvdW50LCBvLmNvdW50KTsKICAgIH0KfQoKcHVibGljIGNsYXNzIE1haW4gewogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewogICAgICAgIFNjYW5uZXIgc2Nhbm5lciA9IG5ldyBTY2FubmVyKFN5c3RlbS5pbik7CiAgICAgICAgU3RyaW5nIHN0cjEgPSBzY2FubmVyLm5leHRMaW5lKCk7CiAgICAgICAgU3RyaW5nW10gd29yZHMgPSBzdHIxLnNwbGl0KCJcXHMrIik7CiAgICAgICAgTGlzdDxDaGFyQmFnPiBiYWdzID0gbmV3IEFycmF5TGlzdDw+KCk7CiAgICAgICAgZm9yIChTdHJpbmcgd29yZCA6IHdvcmRzKSB7CiAgICAgICAgICAgIGJhZ3MuYWRkKG5ldyBDaGFyQmFnKHdvcmQpKTsKICAgICAgICB9CiAgICAgICAgU3RyaW5nIHN0cjIgPSBzY2FubmVyLm5leHRMaW5lKCk7CiAgICAgICAgTGlzdDxDaGFyQmFnPiBtYXRjaGluZ0JhZ3MgPSBuZXcgQXJyYXlMaXN0PD4od29yZHMubGVuZ3RoKTsKICAgICAgICBMaXN0PFN0cmluZz4gYW5hZ3JhbXMgPSBuZXcgQXJyYXlMaXN0PD4od29yZHMubGVuZ3RoKTsKICAgICAgICBMaXN0PFN0cmluZz4gcmVzdWx0V29yZHMgPSBuZXcgQXJyYXlMaXN0PD4od29yZHMubGVuZ3RoKTsKICAgICAgICB3aGlsZSAoIShzdHIyLmlzRW1wdHkoKSB8fCBiYWdzLmlzRW1wdHkoKSkpIHsKICAgICAgICAgICAgZm9yIChDaGFyQmFnIGJhZyA6IGJhZ3MpIHsKICAgICAgICAgICAgICAgIGlmIChiYWcuY2hlY2tBbmFncmFtKHN0cjIuc3Vic3RyaW5nKDAsIGJhZy5nZXRDb3VudCgpKSkpIHsKICAgICAgICAgICAgICAgICAgICBtYXRjaGluZ0JhZ3MuYWRkKGJhZyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKG1hdGNoaW5nQmFncy5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiRG9lcyBub3QgY29tcHV0ZS4iKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICBDaGFyQmFnIGJhZ1dpdGhNYXhMZW5ndGggPSBDb2xsZWN0aW9ucy5taW4obWF0Y2hpbmdCYWdzKTsKICAgICAgICAgICAgaW50IHNwbGl0ID0gYmFnV2l0aE1heExlbmd0aC5nZXRDb3VudCgpOwogICAgICAgICAgICBhbmFncmFtcy5hZGQoc3RyMi5zdWJzdHJpbmcoMCwgc3BsaXQpKTsKICAgICAgICAgICAgcmVzdWx0V29yZHMuYWRkKGJhZ1dpdGhNYXhMZW5ndGguZ2V0V29yZCgpKTsKICAgICAgICAgICAgc3RyMiA9IHN0cjIuc3Vic3RyaW5nKHNwbGl0KTsKICAgICAgICAgICAgYmFncy5yZW1vdmUoYmFnV2l0aE1heExlbmd0aCk7CiAgICAgICAgICAgIG1hdGNoaW5nQmFncy5jbGVhcigpOwogICAgICAgIH0KICAgICAgICBpZiAoIXN0cjIuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiVG9vIGZldyB3b3JkcyEiKTsKICAgICAgICB9IGVsc2UgaWYgKCFiYWdzLmlzRW1wdHkoKSkgewogICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlRvbyBtYW55IHdvcmRzISIpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGZvciAoU3RyaW5nIGFuYSA6IGFuYWdyYW1zKSB7CiAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KGFuYSArICIgIik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCk7CiAgICAgICAgICAgIGZvciAoU3RyaW5nIHcgOiByZXN1bHRXb3JkcykgewogICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludCh3ICsgIiAiKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQ==