#!/usr/bin/python

class distanceTable:
    def __init__(self, n, m):
      self.t = [[-1 for y in range(m)] for x in range(n)]

    # Missing the [i,j] operator 
    def __call__(self, i, j):
      if i < 0:
        return j+1
      if j < 0:
        return i+1
      return self.t[i][j]

    # Missing the [i,j]=v operator
    def set(self, i, j, value):
      self.t[i][j] = value

    # I have not found the join operator, so I did it with injection
    def to_s(self):
      return string.join(
          [string.join(
            [`cell` for cell in row], " ") for row in self.t], "\n")
      
def edit_distance(a, b):
  m = len(a)
  n = len(b)
  distances = distanceTable(m, n)  

  for i in range(m):
    for j in range(n):    

      if a[i] == b[j]:
        cij = 0
      else:
        cij = 1
        
      distances.set(i, j, min(
        distances(i-1, j  ) + 1, 
        distances(i,   j-1) + 1, 
        distances(i-1, j-1) + cij
      ))

  return distances(m-1, n-1)

import sys
if len(sys.argv) != 3:
  print "Usage: editierdistanz WORT_1 WORT_2"
else:
  print edit_distance(sys.argv[1], sys.argv[2])