С указателями программа не работает

Написал фукцию поиска анаграм, без указателей она идельно работает. Как только добавляю указатели, то работать перестает. Что не так делаю?

func main() {
    values := new([]string)
    *values = append(*values, "зерно", "резон", "розен", "кишлак", "навязка", "шкалик", "ВОКАЛИСТ", "листовка", "ластовки", "погода", "вязанка")
    for key, value := range *makeAnagramSets(values) {
        fmt.Println(key, value)
    }
}

func makeAnagramSets(values *[]string) *map[string]*[]string {
    mp := make(map[string]*[]string)
    mp["start"] = nil
    addToMap(values, mp)
    return &mp
}

func addToMap(values *[]string, oldMap map[string]*[]string) *map[string]*[]string {
    for i := 0; i < len(*values); i++ {
        for j := i + 1; j < len(*values); j++ {
            // не выходит из цикла. в цикле проверяет values[1], values[2] с values[0](работает только с одним множеством/ключом)
            // и дальше не идет
            if isAnagram((*values)[i], (*values)[j]) && (*values)[i] != (*values)[j] {
                *values = append(*values, (*values)[j])
                oldMap[(*values)[i]] = values
            }
        }
    }
    keys := make([]string, 0)
    for key := range oldMap {
        keys = append(keys, key)
    }
    oldMap = deletExtras(keys, oldMap)
    return &oldMap
}

func deletExtras(keys []string, mp map[string]*[]string) map[string]*[]string {
    for i := 0; i < len(keys); i++ {
        for j := i + 1; j < len(keys); j++ {
            if isAnagram(keys[i], keys[j]) {
                delete(mp, keys[j])
            }
        }
    }
    delete(mp, "start")
    return mp
}

Ответы (0 шт):