Для решения данной задачи для каждой команды будем сохранять номер строки, в которой она встречалась в последний раз. Это можно сделать, например, при помощи std::map в C++.
При вычислении оптимального количества нажатий сравним:
Прибавим к результату минимальное из этих двух значений, увеличенное на единицу (нажатие клавиши Enter). Если команда еще не встречалась ни разу, то сравнение не требуется — в любом случае, ее придется ввести полностью.
После обработки очередной команды нужно не забыть обновить номер строки ее последнего появления.