def ApproximatePatternMatching(Text, Pattern, d): positions = [] for i in range(len(Text)-len(Pattern)+1): if Text[i:i+len(Pattern)] == Pattern: positions.append(i) elif HammingDistance(Text[i:i+len(Pattern)], Pattern) <= d: positions.append(i) return positions def HammingDistance(p, q): count = 0 for i in range(0, len(p)): if p[i] != q[i]: count += 1 return count