input: def find_lcs(x: str, y: str) -> str:
      """
      Find the longest common subsequence of two given strings.
  
      >>> find_lcs("abcdaf", "acbcf")
      'abcf'
      """
      m = len(x)
      n = len(y)
      
      lcs = [[0 for _ in range(n+1)] for _ in range(m+1)]
    
      for i in range(m+1):
          for j in range(n+1):
              if i == 0 or j == 0:
                  lcs[i][j] = 0
              elif 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)
      lcs_str[index] = ""
    
      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[:-1])
output:     
      m = len(x)
      n = len(y)
      
      lcs = [[0 for _ in range(n+1)] for _ in range(m+1)]
    
      for i in range(m+1):
          for j in range(n+1):
              if i == 0 or j == 0:
                  lcs[i][j] = 0
              elif 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)
      lcs_str[index] = ""
    
      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[:-1])
  