获取未在python中定义的错误“ NameError”名称

我正在尝试实现编辑距离,但仍继续收到错误“ NameError:未定义名称'ins_cost'”。我不确定自己可能做错了什么,这是下面的代码。

def distance (source,target):
    n = len(source)
    m = len(target)

    cols = range(1, n + 1)
    rows = range(1, m + 1)
    # initialize the distance matrix
    distance = {(0, 0): 0}
    for i in cols:
        mod = ins_cost(target[i - 1])
        distance[i, 0] = distance[i - 1, 0] + mod
    for j in rows:
        mod = del_cost(source[j - 1])
        distance[0, j] = distance[0, j - 1] + mod 
    # sort like (0, 0) (0, 1) (1, 0) (0, 2) (1, 1) (2, 0) ...
    # this guarantees the matrix is filled in the right order
    indices = [(i, j) for i in cols for j in rows]
    indices.sort(key=sum)
    # helper function for calculating distances
    def get_dist(row, col, func, t_char, s_char):
        chars = t_char, s_char
        args = [char for char in chars if char != '*']
        return distance[row, col] + func(*args)
   # for each pair of indices, choose insertion, substitution
   # or deletion, whichever gives the shortest distance
    for i, j in indices:
        t_char = target[i - 1]
        s_char = source[j - 1]
        distance[i, j] = min(
           get_dist(i -1, j, ins_cost, t_char, '*'),
           get_dist(i - 1, j - 1, sub_cost, t_char, s_char),
           get_dist(i, j - 1, del_cost, '*', s_char))
    # return distance from the last row and column
    return distance[n, m]
distance("pilchard","pilchards")