refactored NumberPermutation