#
# @lc app=leetcode id=1002 lang=python3
#
# [1002] Find Common Characters
#
# https://leetcode.com/problems/find-common-characters/description/
#
# algorithms
# Easy (65.67%)
# Likes:    533
# Dislikes: 65
# Total Accepted:    49.4K
# Total Submissions: 74.4K
# Testcase Example:  '["bella","label","roller"]'
#
# Given an array A of strings made only from lowercase letters, return a list
# of all characters that show up in all strings within the list (including
# duplicates).  For example, if a character occurs 3 times in all strings but
# not 4 times, you need to include that character three times in the final
# answer.
#
# You may return the answer in any order.
#
#
#
#
# Example 1:
#
#
# Input: ["bella","label","roller"]
# Output: ["e","l","l"]
#
#
#
# Example 2:
#
#
# Input: ["cool","lock","cook"]
# Output: ["c","o"]
#
#
#
#
# Note:
#
#
# 1 <= A.length <= 100
# 1 <= A[i].length <= 100
# A[i][j] is a lowercase letter
#
#
#
#

# @lc code=start

from collections import defaultdict

class Solution:
    def commonChars(self, A: List[str]) -> List[str]:
        n = len(A)
        ar = [[ 0 ] * n for _ in range(26)]
        for i, w in enumerate(A):
            for c in w:
                ar[ord(c) - ord('a')][i] += 1
        res = []
        for i in range(26):
            c = chr(i + ord('a'))
            m = min(ar[i])
            res += [c] * m
        return res


# @lc code=end

