':type s: str
:rtype: bool'

def canWin(self, s):

    lookup = {}
    def canWinHelper(consecutives):
        consecutives = tuple(sorted((c for c in consecutives if (c >= 2))))
        if (consecutives not in lookup):
            lookup[consecutives] = any(((not canWinHelper(((consecutives[:i] + (j, ((c - 2) - j))) + consecutives[(i + 1):]))) for (i, c) in enumerate(consecutives) for j in xrange((c - 1))))
        return lookup[consecutives]
    return canWinHelper(map(len, re.findall('\\+\\++', s)))
