Function L(ByVal string1 As String, ByVal string2 As String) As Long
Dim I As Long, J As Long, string1_length As Long, string2_length As Long
Dim distance(0 To 60, 0 To 50) As Long, smStr1(1 To 60) As Long, smStr2(1 To 50) As Long
Dim min1 As Long, min2 As Long, min3 As Long, minmin As Long, MaxL As Long
string1_length = Len(string1): string2_length = Len(string2)
distance(0, 0) = 0
For I = 1 To string1_length: distance(I, 0) = I: smStr1(I) = Asc(LCase(Mid$(string1, I, 1))): Next
For J = 1 To string2_length: distance(0, J) = J: smStr2(J) = Asc(LCase(Mid$(string2, J, 1))): Next
For I = 1 To string1_length
For J = 1 To string2_length
If smStr1(I) = smStr2(J) Then
distance(I, J) = distance(I - 1, J - 1)
Else
min1 = distance(I - 1, J) + 1
min2 = distance(I, J - 1) + 1
min3 = distance(I - 1, J - 1) + 1
If min2 < min1 Then
If min2 < min3 Then minmin = min2 Else minmin = min3
Else
If min1 < min3 Then minmin = min1 Else minmin = min3
End If
distance(I, J) = minmin
End If
Next
Next
MaxL = string1_length: If string2_length > MaxL Then MaxL = string2_length
L = 100 - CLng((distance(string1_length, string2_length) * 100) / MaxL)
End Function