input: def find_lcs(x: str, y: str) -> str:
      """
      Function to find the longest common subsequence (LCS) of two strings.
      >>> find_lcs("abcdaf", "acbcf")
      'abcf'
      >>> find_lcs("abcdef", "abc")
      'abc'
      """
      m, n = len(x), len(y)
      lcs = [[0] * (n + 1) for _ in range(m + 1)]
      
      for i in range(1, m + 1):
          for j in range(1, n + 1):
              if x[i - 1] == y[j - 1]:
                  lcs[i][j] = lcs[i - 1][j - 1] + 1
              else:
                  lcs[i][j] = max(lcs[i - 1][j], lcs[i][j - 1])
      
      index = lcs[m][n]
      lcs_str = [""] * (index + 1)
      i, j = m, n
      
      while i > 0 and j > 0:
          if x[i - 1] == y[j - 1]:
              lcs_str[index - 1] = x[i - 1]
              i -= 1
              j -= 1
              index -= 1
          elif lcs[i - 1][j] > lcs[i][j - 1]:
              i -= 1
          else:
              j -= 1
              
      return "".join(lcs_str)
  
  x = "abcdaf"
  y = "acbcf"
  res = find_lcs(x, y)
  print("The Longest Common Subsequence is:")
  print(res)
  
  # Output: The Longest Common Subsequence is: 
  # abcf
output:     
      m, n = len(x), len(y)
      lcs = [[0] * (n + 1) for _ in range(m + 1)]
      
      for i in range(1, m + 1):
          for j in range(1, n + 1):
              if x[i - 1] == y[j - 1]:
                  lcs[i][j] = lcs[i - 1][j - 1] + 1
              else:
                  lcs[i][j] = max(lcs[i - 1][j], lcs[i][j - 1])
      
      index = lcs[m][n]
      lcs_str = [""] * (index + 1)
      i, j = m, n
      
      while i > 0 and j > 0:
          if x[i - 1] == y[j - 1]:
              lcs_str[index - 1] = x[i - 1]
              i -= 1
              j -= 1
              index -= 1
          elif lcs[i - 1][j] > lcs[i][j - 1]:
              i -= 1
          else:
              j -= 1
              
      return "".join(lcs_str)
  