# Print first n distinct permutations of string using itertools in Python

Given a string with duplicate characters allowed, print first n permutations of given string such that no permutation is repeated.

Examples:

```Input : string = "abcab", n = 10
Output : aabbc aabcb aacbb ababc abacb
abbac abbca abcab abcba acabb

Input : string = "okok", n = 4
Output : kkoo koko kook okko
```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach:
Python provides an inbuilt method to find the permutations of any given sequence which is present in the `itertools `package. But this method doesn’t provide unique permutations. Hence to ensure that any permutation is not repeated, we use a set and follow the below conditions:

• If the permutation is not present in the set, print it and insert it in the set. Increment the count of number of unique permutations.
• Else, move on to the next permutation.

Below is the implementation of the above approach:

 `# Python3 program to print first n unique  ` `# permutations of the string using itertools ` `from` `itertools ``import` `permutations ` ` `  `# Function to print first n unique  ` `# permutation using itertools  ` `def` `nPermute(string, n):  ` ` `  `    ``# Convert the string to list and sort  ` `    ``# the characters in alphabetical order ` `    ``strList ``=` `sorted``(``list``(string)) ` `     `  `    ``# Create an iterator ` `    ``permList ``=` `permutations(strList) ` ` `  `    ``# Keep iterating until we  ` `    ``# reach nth unique permutation ` `    ``i ``=` `0` `    ``permSet ``=` `set``() ` `    ``tempStr ``=` `''  ` `     `  `    ``while` `i < n: ` `        ``tempStr ``=` `''.join(permList.__next__()) ` `         `  `        ``# Insert the string in the set ` `        ``# if it is not already included ` `        ``# and print it out. ` `        ``if` `tempStr ``not` `in` `permSet: ` `            ``permSet.add(tempStr) ` `            ``print``(tempStr) ` `            ``i ``+``=` `1` `     `  `# Driver code  ` `if` `__name__ ``=``=` `"__main__"``: ` ` `  `    ``string ``=` `"ababc"` `    ``n ``=` `10` `    ``nPermute(string, n)  `

Output:

```aabbc
aabcb
aacbb
ababc
abacb
abbac
abbca
abcab
abcba
acabb
```

GeeksforGeeks has prepared a complete interview preparation course with premium videos, theory, practice problems, TA support and many more features. Please refer Placement 100 for details

My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.