':type s: str
:rtype: List[str]'

def generatePalindromes(self, s):

    cnt = collections.Counter(s)
    mid = tuple((k for (k, v) in cnt.iteritems() if (v % 2)))
    chars = ''.join(((k * (v / 2)) for (k, v) in cnt.iteritems()))
    return ([''.join(((half_palindrome + mid) + half_palindrome[::(-1)])) for half_palindrome in set(itertools.permutations(chars))] if (len(mid) < 2) else [])
