static String commonPrefix(String a, String b) { int i = 0, nb = b.length(), na = a.length(), n = min(na, nb); while (i < n && a.charAt(i) == b.charAt(i)) ++i; return i == nb ? b : substring(a, 0, i); } static S commonPrefix(L l) { if (empty(l)) ret ""; S s = first(l); for (int i = 1; i < l(l); i++) { if (empty(s)) ret s; s = commonPrefix(s, l.get(i)); // Yeah, cold be optimized } ret s; }