generate every possible permutation of characters