import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;
public class Main {
// http://stackoverflow.com/questions/187676/java-equivalents-of-c-sharp-string-format-and-string-join
private static String join
(Collection
<?> s,
String delimiter
) { StringBuilder builder = new StringBuilder();
Iterator<?> iter = s.iterator();
while (iter.hasNext()) {
builder.append(iter.next());
if (!iter.hasNext()) {
break;
}
builder.append(delimiter);
}
return builder.toString();
}
return join
(Arrays.
asList(s
), delimiter
); }
@SuppressWarnings("unused")
HashSet<Integer> u = new HashSet<Integer>();
return u.
toArray(new Integer[u.
size()]); }
HashSet<Integer> u = new HashSet<Integer>();
u.
retainAll(Arrays.
asList(a2
));
return u.
toArray(new Integer[u.
size()]); }
List<Integer> lst = new ArrayList<Integer>();
for (int i=0; i<s.length; i++){
if (s[i] == e){
lst.add(i);
}
}
return lst.
toArray(new Integer[lst.
size()]); }
Integer[] int_s1_s2
= intersect
(s1, s2
); int_s1_s2
= Arrays.
asList(int_s1_s2
).
toArray(new Integer[]{null,
null,
null,
null});
findIndexs(s1, int_s1_s2[0]),
findIndexs(s1, int_s1_s2[1]),
findIndexs(s1, int_s1_s2[2]),
findIndexs(s1, int_s1_s2[3])
};
findIndexs(s2, int_s1_s2[0]),
findIndexs(s2, int_s1_s2[1]),
findIndexs(s2, int_s1_s2[2]),
findIndexs(s2, int_s1_s2[3])
};
intersect(table_s1[0], table_s2[0]).length,
intersect(table_s1[1], table_s2[1]).length,
intersect(table_s1[2], table_s2[2]).length,
intersect(table_s1[3], table_s2[3]).length
};
Math.
min(table_s1
[0].
length, table_s2
[0].
length) - count_a
[0],
Math.
min(table_s1
[1].
length, table_s2
[1].
length) - count_a
[1],
Math.
min(table_s1
[2].
length, table_s2
[2].
length) - count_a
[2],
Math.
min(table_s1
[3].
length, table_s2
[3].
length) - count_a
[3] };
return new GuestResult(
count_a[0] + count_a[1] + count_a[2] + count_a[3],
count_b[0] + count_b[1] + count_b[2] + count_b[3]
);
}
int startIndex = 4 - s.length();
for (int i=0; i<s.length(); i++){
tmp
[i
+startIndex
] = Integer.
parseInt(s.
substring(i, i
+1)); }
return tmp;
}
public static void main
(String[] args
) { Scanner scanner
= new Scanner
(System.
in); while (true){
{
if (!scanner.hasNextInt()) break;
tmp = scanner.next();
if (tmp.length() > 4) break;
s1 = splitToInts_4(tmp);
}
{
if (!scanner.hasNextInt()) break;
tmp = scanner.next();
if (tmp.length() > 4) break;
s2 = splitToInts_4(tmp);
}
GuestResult result = guest_4(s1, s2);
System.
out.
println(join
(s1,
"") + " " + join(s2, "") +
": " + result.count_a() + "A" +
result.count_b() + "B");
}
}
private static class GuestResult{
private int _a, _b;
public GuestResult(int count_a, int count_b){
_a = count_a;
_b = count_b;
}
public int count_a() {return _a;}
public int count_b() {return _b;}
}
}
aW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CmltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOwppbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247CmltcG9ydCBqYXZhLnV0aWwuSGFzaFNldDsKaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKaW1wb3J0IGphdmEudXRpbC5MaXN0OwppbXBvcnQgamF2YS51dGlsLlNjYW5uZXI7CgpwdWJsaWMgY2xhc3MgTWFpbiB7CiAgICAKICAgIC8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTg3Njc2L2phdmEtZXF1aXZhbGVudHMtb2YtYy1zaGFycC1zdHJpbmctZm9ybWF0LWFuZC1zdHJpbmctam9pbgogICAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIGpvaW4oQ29sbGVjdGlvbjw/PiBzLCBTdHJpbmcgZGVsaW1pdGVyKSB7CiAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyID0gbmV3IFN0cmluZ0J1aWxkZXIoKTsKICAgICAgICBJdGVyYXRvcjw/PiBpdGVyID0gcy5pdGVyYXRvcigpOwogICAgICAgIHdoaWxlIChpdGVyLmhhc05leHQoKSkgewogICAgICAgICAgICBidWlsZGVyLmFwcGVuZChpdGVyLm5leHQoKSk7CiAgICAgICAgICAgIGlmICghaXRlci5oYXNOZXh0KCkpIHsKICAgICAgICAgICAgICBicmVhazsgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgfQogICAgICAgICAgICBidWlsZGVyLmFwcGVuZChkZWxpbWl0ZXIpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogICAgfQogICAgCiAgICBwcml2YXRlIHN0YXRpYyA8VD4gU3RyaW5nIGpvaW4oVFtdIHMsIFN0cmluZyBkZWxpbWl0ZXIpewogICAgICAgIHJldHVybiBqb2luKEFycmF5cy5hc0xpc3QocyksIGRlbGltaXRlcik7CiAgICB9CiAgICAKICAgIEBTdXBwcmVzc1dhcm5pbmdzKCJ1bnVzZWQiKQogICAgcHJpdmF0ZSBzdGF0aWMgSW50ZWdlcltdIHVuaW9uKEludGVnZXJbXSBhMSwgSW50ZWdlcltdIGEyKXsKICAgICAgICBIYXNoU2V0PEludGVnZXI+IHUgPSBuZXcgSGFzaFNldDxJbnRlZ2VyPigpOwogICAgICAgIHUuYWRkQWxsKEFycmF5cy5hc0xpc3QoYTEpKTsKICAgICAgICB1LmFkZEFsbChBcnJheXMuYXNMaXN0KGEyKSk7CiAgICAgICAgCiAgICAgICAgcmV0dXJuIHUudG9BcnJheShuZXcgSW50ZWdlclt1LnNpemUoKV0pOwogICAgfQogICAgCiAgICBwcml2YXRlIHN0YXRpYyBJbnRlZ2VyW10gaW50ZXJzZWN0KEludGVnZXJbXSBhMSwgSW50ZWdlcltdIGEyKXsKICAgICAgICBIYXNoU2V0PEludGVnZXI+IHUgPSBuZXcgSGFzaFNldDxJbnRlZ2VyPigpOwogICAgICAgIHUuYWRkQWxsKEFycmF5cy5hc0xpc3QoYTEpKTsKICAgICAgICB1LnJldGFpbkFsbChBcnJheXMuYXNMaXN0KGEyKSk7CiAgICAgICAgCiAgICAgICAgcmV0dXJuIHUudG9BcnJheShuZXcgSW50ZWdlclt1LnNpemUoKV0pOwogICAgfSAgCiAgICAKICAgIHByaXZhdGUgc3RhdGljIEludGVnZXJbXSBmaW5kSW5kZXhzKEludGVnZXJbXSBzLCBJbnRlZ2VyIGUpewogICAgICAgIExpc3Q8SW50ZWdlcj4gbHN0ID0gbmV3IEFycmF5TGlzdDxJbnRlZ2VyPigpOwogICAgICAgIGZvciAoaW50IGk9MDsgaTxzLmxlbmd0aDsgaSsrKXsKICAgICAgICAgICAgaWYgKHNbaV0gPT0gZSl7CiAgICAgICAgICAgICAgICBsc3QuYWRkKGkpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHJldHVybiBsc3QudG9BcnJheShuZXcgSW50ZWdlcltsc3Quc2l6ZSgpXSk7CiAgICB9CiAgICAKICAgIHByaXZhdGUgc3RhdGljIEd1ZXN0UmVzdWx0IGd1ZXN0XzQoSW50ZWdlcltdIHMxLCBJbnRlZ2VyW10gczIpewogICAgICAgIEludGVnZXJbXSBpbnRfczFfczIgPSBpbnRlcnNlY3QoczEsIHMyKTsKICAgICAgICBpbnRfczFfczIgPSBBcnJheXMuYXNMaXN0KGludF9zMV9zMikudG9BcnJheShuZXcgSW50ZWdlcltde251bGwsbnVsbCxudWxsLG51bGx9KTsKICAgICAgICAKICAgICAgICBJbnRlZ2VyW11bXSB0YWJsZV9zMSA9IHsKICAgICAgICAgICAgZmluZEluZGV4cyhzMSwgaW50X3MxX3MyWzBdKSwgCiAgICAgICAgICAgIGZpbmRJbmRleHMoczEsIGludF9zMV9zMlsxXSksIAogICAgICAgICAgICBmaW5kSW5kZXhzKHMxLCBpbnRfczFfczJbMl0pLCAKICAgICAgICAgICAgZmluZEluZGV4cyhzMSwgaW50X3MxX3MyWzNdKQogICAgICAgIH07CiAgICAgICAgCiAgICAgICAgSW50ZWdlcltdW10gdGFibGVfczIgPSB7CiAgICAgICAgICAgIGZpbmRJbmRleHMoczIsIGludF9zMV9zMlswXSksIAogICAgICAgICAgICBmaW5kSW5kZXhzKHMyLCBpbnRfczFfczJbMV0pLCAKICAgICAgICAgICAgZmluZEluZGV4cyhzMiwgaW50X3MxX3MyWzJdKSwgCiAgICAgICAgICAgIGZpbmRJbmRleHMoczIsIGludF9zMV9zMlszXSkKICAgICAgICB9OwogICAgICAgIAogICAgICAgIEludGVnZXJbXSBjb3VudF9hID0gewogICAgICAgICAgICBpbnRlcnNlY3QodGFibGVfczFbMF0sIHRhYmxlX3MyWzBdKS5sZW5ndGgsCiAgICAgICAgICAgIGludGVyc2VjdCh0YWJsZV9zMVsxXSwgdGFibGVfczJbMV0pLmxlbmd0aCwKICAgICAgICAgICAgaW50ZXJzZWN0KHRhYmxlX3MxWzJdLCB0YWJsZV9zMlsyXSkubGVuZ3RoLAogICAgICAgICAgICBpbnRlcnNlY3QodGFibGVfczFbM10sIHRhYmxlX3MyWzNdKS5sZW5ndGgKICAgICAgICB9OwogICAgICAgIAogICAgICAgIEludGVnZXJbXSBjb3VudF9iID0gewogICAgICAgICAgICBNYXRoLm1pbih0YWJsZV9zMVswXS5sZW5ndGgsIHRhYmxlX3MyWzBdLmxlbmd0aCkgLSBjb3VudF9hWzBdLAogICAgICAgICAgICBNYXRoLm1pbih0YWJsZV9zMVsxXS5sZW5ndGgsIHRhYmxlX3MyWzFdLmxlbmd0aCkgLSBjb3VudF9hWzFdLAogICAgICAgICAgICBNYXRoLm1pbih0YWJsZV9zMVsyXS5sZW5ndGgsIHRhYmxlX3MyWzJdLmxlbmd0aCkgLSBjb3VudF9hWzJdLAogICAgICAgICAgICBNYXRoLm1pbih0YWJsZV9zMVszXS5sZW5ndGgsIHRhYmxlX3MyWzNdLmxlbmd0aCkgLSBjb3VudF9hWzNdCiAgICAgICAgfTsKICAgICAgICAKICAgICAgICByZXR1cm4gbmV3IEd1ZXN0UmVzdWx0KAogICAgICAgICAgICBjb3VudF9hWzBdICsgY291bnRfYVsxXSArIGNvdW50X2FbMl0gKyBjb3VudF9hWzNdLAogICAgICAgICAgICBjb3VudF9iWzBdICsgY291bnRfYlsxXSArIGNvdW50X2JbMl0gKyBjb3VudF9iWzNdCiAgICAgICAgKTsKICAgIH0KICAgIAogICAgcHJpdmF0ZSBzdGF0aWMgSW50ZWdlcltdIHNwbGl0VG9JbnRzXzQoU3RyaW5nIHMpewogICAgICAgIEludGVnZXJbXSB0bXAgPSB7MCwwLDAsMH07CiAgICAgICAgCiAgICAgICAgaW50IHN0YXJ0SW5kZXggPSA0IC0gcy5sZW5ndGgoKTsKICAgICAgICAKICAgICAgICBmb3IgKGludCBpPTA7IGk8cy5sZW5ndGgoKTsgaSsrKXsKICAgICAgICAgICAgdG1wW2krc3RhcnRJbmRleF0gPSBJbnRlZ2VyLnBhcnNlSW50KHMuc3Vic3RyaW5nKGksIGkrMSkpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICByZXR1cm4gdG1wOwogICAgfQogICAgCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CiAgICAgICAgU2Nhbm5lciBzY2FubmVyID0gbmV3IFNjYW5uZXIoU3lzdGVtLmluKTsKICAgICAgICB3aGlsZSAodHJ1ZSl7CiAgICAgICAgICAgIEludGVnZXJbXSBzMTsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgU3RyaW5nIHRtcDsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgaWYgKCFzY2FubmVyLmhhc05leHRJbnQoKSkgYnJlYWs7CiAgICAgICAgICAgICAgICB0bXAgPSBzY2FubmVyLm5leHQoKTsKICAgICAgICAgICAgICAgIGlmICh0bXAubGVuZ3RoKCkgPiA0KSBicmVhazsgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBzMSA9IHNwbGl0VG9JbnRzXzQodG1wKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgSW50ZWdlcltdIHMyOwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBTdHJpbmcgdG1wOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBpZiAoIXNjYW5uZXIuaGFzTmV4dEludCgpKSBicmVhazsKICAgICAgICAgICAgICAgIHRtcCA9IHNjYW5uZXIubmV4dCgpOwogICAgICAgICAgICAgICAgaWYgKHRtcC5sZW5ndGgoKSA+IDQpIGJyZWFrOyAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIHMyID0gc3BsaXRUb0ludHNfNCh0bXApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICBHdWVzdFJlc3VsdCByZXN1bHQgPSBndWVzdF80KHMxLCBzMik7CiAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihqb2luKHMxLCAiIikgKyAiICIgKyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpvaW4oczIsICIiKSArIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjogIiArIHJlc3VsdC5jb3VudF9hKCkgKyAiQSIgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5jb3VudF9iKCkgKyAiQiIpOwogICAgICAgIH0KICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBHdWVzdFJlc3VsdHsKICAgICAgICBwcml2YXRlIGludCBfYSwgX2I7CiAgICAgICAgCiAgICAgICAgcHVibGljIEd1ZXN0UmVzdWx0KGludCBjb3VudF9hLCBpbnQgY291bnRfYil7CiAgICAgICAgICAgIF9hID0gY291bnRfYTsKICAgICAgICAgICAgX2IgPSBjb3VudF9iOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBwdWJsaWMgaW50IGNvdW50X2EoKSB7cmV0dXJuIF9hO30KICAgICAgICAKICAgICAgICBwdWJsaWMgaW50IGNvdW50X2IoKSB7cmV0dXJuIF9iO30KICAgIH0KfQo=