я написал код, решающий эту задачу, который выполняется максимум за 0.4секунды на интел 2Ггц четырехяденом, ос убунту. в компиляторе code::blocks отображается время.
вы либо на сдк запускаете, либо в учет идет время ожидания ввода. в моей программе ввод я отключил и при к=50 время 0,1...0.4 на картинке видно 0.2
не знаю насколько моя программа оптимальна, но я точно не понял комментарий выше по aa|bccdd... aabcc|dd...
код я разместил на сайте в графе программирование - с++
tlito.ru/node/203