from timeit import timeit
import re


lst = [123456, 889756, 854123, 997886, 634178] * 10000

def has_duplicates(n):
  s = 0
  while n:
    d = n % 10
    if (1<<d) & s:
      return True
    s |= 1<<d
    n = n // 10
  return False

def f(lst):
  return [i for i in lst if not has_duplicates(i)]


def re_method(lst):
    r = re.compile(r"(\d).*\1")
    return [i for i in lst if not r.search(str(i))]


def trincot1(lst):
    return [n for n in lst if len(set(str(n))) == len(str(n))]


def afaalgo(lst):
    answer = []
    for value in lst:
        value = str(value)
        new_list = []
        for nums in value:
            new_list.append(nums)
        if sorted(list(set(new_list))) == sorted(new_list):
            answer.append(int(value))
    return answer

t0 = timeit(lambda: f(lst), number=10)
t1 = timeit(lambda: re_method(lst), number=10)
t2 = timeit(lambda: trincot1(lst), number=10)
t4 = timeit(lambda: afaalgo(lst), number=10)

print(t0)
print(t1)
print(t2)
print(t4)