#!/usr/bin/env python

__author__ = "bt3"


''' Write code to generate all possible case permutations of a given
lower-cased string
'''

def alpha_permutation(string):
    '''
    >>> alpha_permutation('0ab')
    ['0Ab', '0Ab', '0ab', '0ab', '0Ba', '0Ba', '0ba', '0ba', 'ab0', 'a0b', 'a0b', 'b0a', 'b0a', 'ba0']
    >>> alpha_permutation('')
    ''
    '''

    if len(string) < 2:
        return string

    result = []

    for i, c in enumerate(string):
        rest =  string[i+1:] + string[:i]
        for cc in alpha_permutation(rest):
            if cc.isalpha():
                result.append(c.upper() + cc)
            result.append(c + cc)

    return result



if __name__ == '__main__':
    import doctest
    doctest.testmod()