import editdistance


class EditDistanceService:
    INSTACE = None

    @classmethod
    def create(cls):
        if cls.INSTACE is None:
            cls.INSTACE = EditDistanceService()

    @classmethod
    def instance(cls):
        if cls.INSTACE is None:
            cls.create()
        return cls.INSTACE

    def compute(self, words1, words2):
        return editdistance.eval(words1, words2)

        # if len(s1) > len(s2):
        #     s1, s2 = s2, s1

        # distances = range(len(s1) + 1)
        # for i2, c2 in enumerate(s2):
        #     distances_ = [i2+1]
        #     for i1, c1 in enumerate(s1):
        #         if c1 == c2:
        #             distances_.append(distances[i1])
        #         else:
        #             distances_.append(1 + min((distances[i1], distances[i1 + 1], distances_[-1])))
        #     distances = distances_
        # return distances[-1]

import editdistance


class EditDistanceService:
    INSTACE = None

    @classmethod
    def create(cls):
        if cls.INSTACE is None:
            cls.INSTACE = EditDistanceService()

    @classmethod
    def instance(cls):
        if cls.INSTACE is None:
            cls.create()
        return cls.INSTACE

    def compute(self, words1, words2):
        return editdistance.eval(words1, words2)

        # if len(s1) > len(s2):
        #     s1, s2 = s2, s1

        # distances = range(len(s1) + 1)
        # for i2, c2 in enumerate(s2):
        #     distances_ = [i2+1]
        #     for i1, c1 in enumerate(s1):
        #         if c1 == c2:
        #             distances_.append(distances[i1])
        #         else:
        #             distances_.append(1 + min((distances[i1], distances[i1 + 1], distances_[-1])))
        #     distances = distances_
        # return distances[-1]

# if len(s1) > len(s2): #     s1, s2 = s2, s1 # distances = range(len(s1) + 1) # for i2, c2 in enumerate(s2): #     distances_ = [i2+1] #     for i1, c1 in enumerate(s1): #         if c1 == c2: #             distances_.append(distances[i1]) #         else: #             distances_.append(1 + min((distances[i1], distances[i1 + 1], distances_[-1]))) #     distances = distances_ # return distances[-1]