Если проблема заключается в том, «как перебирать только уникальные слова», я просто использовал бы HashSet для слов, и когда вы помещаете слова в стек
1) Если слово находится в HashSet, не нажимайте на него.
2) Если слово отсутствует в HashSet, вставьте его и добавьте в HashSet.
Если вам нужно отслеживать количество вхождений, вы можете использовать HashMap вместо HashSet, где вы увеличиваете количество повторяющихся строк, с которыми вы сталкиваетесь.
Если вам нужно сохранить порядок и количество вхождений для чего-либо, я бы оставил отдельный неуникальный стек, в который я бы просто помещал все.
Надеюсь, я правильно понял вашу проблему.