Python 3 Solution
\nIndexing is a bit annoying, since everything is 1-indexed, so keep that in mind. \n\npy\nclass Solution:\n    def minimumTeachings(self, n: int, languages: Li
\nIndexing is a bit annoying, since everything is 1-indexed, so keep that in mind. \n\n```py\nclass Solution:\n    def minimumTeachings(self, n: int, languages: List[List[int]], friendships: List[List[int]]) -> int:\n        \n        # Find which friendships can not communicate, i.e. which users need to be taught\n        usersToBeTaught = set() # 0-indexed\n        \n        for f in friendships:\n            f1 = set(languages[f[0] - 1])\n            f2 = set(languages[f[1] - 1])\n            if f1.isdisjoint(f2): #If there are no common languages between that pair of friends\n                usersToBeTaught.add(f[0] - 1)\n                usersToBeTaught.add(f[1] - 1)\n                        \n        if len(usersToBeTaught) == 0:\n            return 0\n        \n        # For each language, how many people will I need to teach in usersToBeTaight?\n        languageCounter = collections.defaultdict(int)\n        \n        for language in range(1, n + 1):\n            for user in usersToBeTaught:\n                if language not in languages[user]:\n                    languageCounter[language] += 1\n        \n        # Find minimum of how many people I need to teach\n        return min(languageCounter.values())\n        \n                \n        \n        ```
['Python']