## itertools

August 29, 2019

## itertools.permutations()

itertools.permutations(iterable[, r])

This tool returns successive length permutations of elements in an iterable. If is not specified or is None, then defaults to the length of the iterable, and all possible full length permutations are generated. Permutations are printed in a lexicographic sorted order. So, if the input iterable is sorted, the permutation tuples will be produced in a sorted order.

### My solution

```
from itertools import permutations
inp = input().split()
s, k, result = inp[0], int(inp[1]), []
[result.append(''.join(list(i))) for i in list(permutations(s, k))]
result.sort()
[print(i) for i in result]
```

### Adapted solution

```
from itertools import permutations
s, k = input().split()
print(*[''.join(i) for i in permutations(sorted(s), int(k))], sep='\n')
```

## itertools.combinations()

itertools.combinations(iterable, r)

This tool returns the length subsequences of elements from the input iterable. Combinations are emitted in lexicographic sorted order. So, if the input iterable is sorted, the combination tuples will be produced in sorted order.

### My solution

```
from itertools import combinations
s, k = input().split()
print(*[''.join(j) for i in range(int(k)+1) for j in combinations(sorted(s), i)
if ''.join(j) != ''], sep='\n')
```

### Adapted solution

```
no adaptions
```