from itertools import product def dashed_combos(inputstring): words = inputstring.split() for combo in product(' -', repeat=len(words) - 1): yield ''.join(w for pair in zip(words, combo + ('',)) for w in pair)