func createSubstrings(String word) -> Array { gather { combinations(word.len+1, 2, {|i,j| take(word.substr(i, j-i)) }) } } func findLongestCommon(String first, String second) -> String { createSubstrings(first) & createSubstrings(second) -> max_by { .len } } say findLongestCommon("thisisatest", "testing123testing")