Go clean code
\n\nfunc minimumTeachings(n int, languages [][]int, friendships [][]int) int {\n\tvar cantSpeekPersons = make(map[int]struct{})\n\tfor _, friendship := range fr
\n```\nfunc minimumTeachings(n int, languages [][]int, friendships [][]int) int {\n\tvar cantSpeekPersons = make(map[int]struct{})\n\tfor _, friendship := range friendships {\n\t\tfst := friendship[0] - 1\n\t\tsnd := friendship[1] - 1\n\t\tif !isLanguagesIntersects(languages, fst, snd) {\n\t\t\tcantSpeekPersons[fst] = struct{}{}\n\t\t\tcantSpeekPersons[snd] = struct{}{}\n\t\t}\n\t}\n\n\tvar (\n\t\tdontSpeeksCountByLanguage = make([]int, n)\n\t\tmaxDontSpeekCount         = 0\n\t)\n\tfor person := range cantSpeekPersons {\n\t\tfor _, language := range languages[person] {\n\t\t\tlanguage--\n\t\t\tdontSpeeksCountByLanguage[language]++\n\t\t\tcurrentCount := dontSpeeksCountByLanguage[language]\n\t\t\tif currentCount > maxDontSpeekCount {\n\t\t\t\tmaxDontSpeekCount = currentCount\n\t\t\t}\n\t\t}\n\t}\n\n\treturn len(cantSpeekPersons) - maxDontSpeekCount\n}\n\nfunc isLanguagesIntersects(languages [][]int, fst, snd int) bool {\n\tvar tmpSet = make(map[int]struct{})\n\n\tfor _, language := range languages[fst] {\n\t\ttmpSet[language] = struct{}{}\n\t}\n\n\tfor _, language := range languages[snd] {\n\t\tif _, ok := tmpSet[language]; ok {\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn false\n}\n```
['Go']