pythonで累乗探索

#!/usr/bin/env python

def make_ans(ans_li, stocked_li, input_li):
    total = -1
    result_ans_li = []
    result_stocked_li = []
    for ans in ans_li:
        total += 1
        for index, i in enumerate(input_li):
            for stocked in stocked_li[total]:
                if index == stocked: break
            else:
                result_ans_li.append(ans_li[total] + str(i))
                result_stocked_li.append(stocked_li[total]+[index])
    return result_ans_li, result_stocked_li

def run():
    n = 5
    k = 3
    input_li = [1, 2, 3, 4, 1]
    ans_li = [str(i) for i in input_li]
    stocked_li = [[i] for i in range(len(input_li))]
    for K in range(k-1):
        ans_li, stocked_li = make_ans(ans_li, stocked_li, input_li)
    print(ans_li)

if __name__ == '__main__':
    run()