shortest common supersequence dynamic programming