Description

Solution

    class Solution {
      public:
      int numTilePossibilities(string tiles) {
        int count[26] = {0};
        for(char ch: tiles){
          count[ch-'A']++;
        }
        return dfs(count);
      }
      int dfs(int count[]){
        int res = 0;
        for(int i =0; i< 26; i++){
          if(count[i]==0)
            continue;
          res++;
          count[i]--;
          res += dfs(count); // NOTE!!!
          count[i]++;
        }
        return res;
      }
    };

Conclusion