.at() solleva un'eccezione in caso l'indice non sia valido.
Nel tuo caso, parola2 ha lunghezza 0 pertanto il metodo .at() solleva l'eccezione.
Risolvi in due modi: dimensioni parola2 a parola,
string parola2(parola1.size(),'\0');
// o equivalente
string parola2;
parola2.resize(parola1.size());
oppure scrivi:
parola2.append(1, parola1.at(lunghezza - k -1));
(notare il -1 alla fine, dato che lunghezza non è un indice valido)