/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
Boolean[][][] memoize
= new Boolean[a.
length()+1][b.
length()+1][c.
length()+1]; return checkOverlap(a, b, c, 0, 0, 0, memoize);
}
private static boolean checkOverlap(
, int pa
, int pb
, int pc
) {
if (res != null) {
return (boolean)res;
}
if (pa == a.length() && pb == b.length() && pc == c.length()) {
res = true;
} else if (pc == c.length()) {
res = false;
} else {
res = false;
if (pa != a.length() && c.charAt(pc) == a.charAt(pa) && checkOverlap(a, b, c, pa+1, pb, pc+1, memoize)) {
res = true;
} else if (pb != b.length() && c.charAt(pc) == b.charAt(pb) && checkOverlap(a, b, c, pa, pb+1, pc+1, memoize)) {
res = true;
}
}
return (memoize[pa][pb][pc] = res);
}
{
boolean r1 = checkOverlap("xxy", "xxz", "xxzxxy");
boolean r2 = checkOverlap("xxyxxy", "xxzxxz", "xxzxxyxxyxxz");
boolean r3 = checkOverlap("xxy", "xxy", "xxzxxyxxyxxz");
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXByaXZhdGUgc3RhdGljIGJvb2xlYW4gY2hlY2tPdmVybGFwKFN0cmluZyBhLCBTdHJpbmcgYiwgU3RyaW5nIGMpIHsKCQlCb29sZWFuW11bXVtdIG1lbW9pemUgPSBuZXcgQm9vbGVhblthLmxlbmd0aCgpKzFdW2IubGVuZ3RoKCkrMV1bYy5sZW5ndGgoKSsxXTsKCQlyZXR1cm4gY2hlY2tPdmVybGFwKGEsIGIsIGMsIDAsIDAsIDAsIG1lbW9pemUpOwoJfQoJcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBjaGVja092ZXJsYXAoCgkJU3RyaW5nIGEKCSwgICBTdHJpbmcgYgoJLCAgIFN0cmluZyBjCgksICAgaW50IHBhCgksICAgaW50IHBiCgksICAgaW50IHBjCgksICAgQm9vbGVhbltdW11bXSBtZW1vaXplCgkpIHsKCQlCb29sZWFuIHJlcyA9IG1lbW9pemVbcGFdW3BiXVtwY107CgkJaWYgKHJlcyAhPSBudWxsKSB7CgkJCXJldHVybiAoYm9vbGVhbilyZXM7CgkJfQogICAgICAgIGlmIChwYSA9PSBhLmxlbmd0aCgpICYmIHBiID09IGIubGVuZ3RoKCkgJiYgcGMgPT0gYy5sZW5ndGgoKSkgewogICAgICAgIAlyZXMgPSB0cnVlOwogICAgICAgIH0gZWxzZSBpZiAocGMgPT0gYy5sZW5ndGgoKSkgewogICAgICAgIAlyZXMgPSBmYWxzZTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXMgPSBmYWxzZTsKICAgICAgICAgICAgaWYgKHBhICE9IGEubGVuZ3RoKCkgJiYgYy5jaGFyQXQocGMpID09IGEuY2hhckF0KHBhKSAmJiBjaGVja092ZXJsYXAoYSwgYiwgYywgcGErMSwgcGIsIHBjKzEsIG1lbW9pemUpKSB7CiAgICAgICAgICAgIAlyZXMgPSB0cnVlOwogICAgICAgICAgICB9IGVsc2UgaWYgKHBiICE9IGIubGVuZ3RoKCkgJiYgYy5jaGFyQXQocGMpID09IGIuY2hhckF0KHBiKSAmJiBjaGVja092ZXJsYXAoYSwgYiwgYywgcGEsIHBiKzEsIHBjKzEsIG1lbW9pemUpKSB7CiAgICAgICAgICAgIAlyZXMgPSB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAobWVtb2l6ZVtwYV1bcGJdW3BjXSA9IHJlcyk7Cgl9CglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykgdGhyb3dzIGphdmEubGFuZy5FeGNlcHRpb24KCXsKCQlib29sZWFuIHIxID0gY2hlY2tPdmVybGFwKCJ4eHkiLCAieHh6IiwgInh4enh4eSIpOwoJCVN5c3RlbS5vdXQucHJpbnRsbihyMSk7CgkJYm9vbGVhbiByMiA9IGNoZWNrT3ZlcmxhcCgieHh5eHh5IiwgInh4enh4eiIsICJ4eHp4eHl4eHl4eHoiKTsKCQlTeXN0ZW0ub3V0LnByaW50bG4ocjIpOwoJCWJvb2xlYW4gcjMgPSBjaGVja092ZXJsYXAoInh4eSIsICJ4eHkiLCAieHh6eHh5eHh5eHh6Iik7CgkJU3lzdGVtLm91dC5wcmludGxuKHIzKTsKCX0KfQ==