# Minimum Characters For Words

![](https://3743232000-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHW2IQuh2PFpWJDvBz2FF%2Fuploads%2Fgit-blob-5050282f75875f17c9c7cf017b0b97015d64574a%2FScreenshot%202023-02-05%20at%2015.43.17.png?alt=media)

* n \* l, c
* n: number of words, l: longest word, c: the number of unique characters

```tsx
function minimumCharactersForWords(words) {
  const memo = {};

  for (const word of words) {
    
    const temp = {};
    for (const c of word) {
      if (temp[c] === undefined)
        temp[c] = 0;
      temp[c]++;
    }
    for (const c of word) {
      if (memo[c] === undefined)
        memo[c] = 0;
      memo[c] = Math.max(temp[c], memo[c]);
    }
    
  }

  const answer = [];
  for (const [c, count] of Object.entries(memo)) {
    for (let i = 0; i < count; i++) {
      answer.push(c);
    }
  }

  return answer;
}

// Do not edit the line below.
exports.minimumCharactersForWords = minimumCharactersForWords;
```
