input: Write a function to find the longest common subsequence between two strings. The function should return the length of the longest common subsequence. If either of the strings is empty, the function should return 0.
  def lcs(X, Y): 
      m = len(X) 
      n = len(Y) 
  
      L = [[None]*(n+1) for i in range(m+1)] 
  
      for i in range(m+1): 
          for j in range(n+1): 
              if i == 0 or j == 0 : 
                  L[i][j] = 0
              elif X[i-1] == Y[j-1]: 
                  L[i][j] = L[i-1][j-1]+1
              else: 
                  L[i][j] = max(L[i-1][j] , L[i][j-1]) 
  
      return L[m][n]
  
  # Test cases
  assert lcs("ABACEDF", "ABDCF")==4
  assert lcs("ABCBDAB", "BDCABA")==4
  assert lcs("XMJYAUZ", "MZJAWXU")==4
  assert lcs("", "ABDCF")==0
  assert lcs("ABACEDF", "")==0
output: def lcs(X, Y): 
      m = len(X) 
      n = len(Y) 
  
      L = [[None]*(n+1) for i in range(m+1)] 
  
      for i in range(m+1): 
          for j in range(n+1): 
              if i == 0 or j == 0 : 
                  L[i][j] = 0
              elif X[i-1] == Y[j-1]: 
                  L[i][j] = L[i-1][j-1]+1
              else: 
                  L[i][j] = max(L[i-1][j] , L[i][j-1]) 
  
      return L[m][n]