Leetcode Longest Common Subsequence Dynamic Programming Definition