implement longest common subsequence
implement longest common substring