Question: 
Write a function to print all permutations of a given string including duplicates.


Model's Code:
def permute_string(s):
    from itertools import permutations
    return [''.join(p) for p in permutations(s)]



Sample Correct Code:
def permute_string(str):
    if len(str) == 0:
        return ['']
    prev_list = permute_string(str[1:len(str)])
    next_list = []
    for i in range(0,len(prev_list)):
        for j in range(0,len(str)):
            new_str = prev_list[i][0:j]+str[0]+prev_list[i][j:len(str)-1]
            if new_str not in next_list:
                next_list.append(new_str)
    return next_list


Asserts:
assert permute_string('ab')==['ab', 'ba']
assert permute_string('abc')==['abc', 'bac', 'bca', 'acb', 'cab', 'cba']
assert permute_string('abcd')==['abcd', 'bacd', 'bcad', 'bcda', 'acbd', 'cabd', 'cbad', 'cbda', 'acdb', 'cadb', 'cdab', 'cdba', 'abdc', 'badc', 'bdac', 'bdca', 'adbc', 'dabc', 'dbac', 'dbca', 'adcb', 'dacb', 'dcab', 'dcba']


Tests:
Test 1 of 3: PASS
Test 2 of 3: FAIL: AssertionError()

Test 374 of 974: 271/374 (72.45989304812835%): failed