class Solution:
    def numTilePossibilities(self, tiles: str) -> int:
        letters = set()
        visit = [0 for _ in range(len(tiles))]

        def dfs(cur, visit, letters):
            for i in range(len(tiles)):
                if visit[i] == 0 and cur + tiles[i] not in letters:
                    letters.add(cur + tiles[i])
                    visit[i] = 1
                    dfs(cur + tiles[i], visit, letters)
                    visit[i] = 0
       
        dfs("", visit, letters)
        return len(letters)

만만한 백트래킹 문제만 골라서 푸는 나..