class Solution:
    def generateAbbreviations(self, word: str) -> List[str]:
        """ tc O(N*2^N)    sc O(N) for path space      
        """
        res = []
        
        def dfs(pos,path, cnt):
            if pos == len(word):
                if cnt > 0:
                    path.append(str(cnt))
                res.append(''.join(path))
            else:
                # put current cnt into path 
                dfs(pos+1,path+[str(cnt) if cnt else ""] + [word[pos]], 0 )
                # not put
                dfs(pos+1,path, cnt+1 )
        dfs(0,[],0)
        return res