#include <iostream>
#include <string>
#include <algorithm>
#include <windows.h>
void prepare(std::string& value, char a, char b)
{
size_t sz = value.size();
if(sz % 2)
value.insert(0, 1, b);
else
value.insert(sz / 2, 1, a);
}
auto shift = [](const char c, const char a)
{
return (c != 'Ё')
? (c != 'Е')
? a + ((c - a + 1) % 32)
: 'Ё'
: 'Ж';
};
std::string& process(std::string& s, const char a, const char b, int repeat)
{
if(!repeat) return s;
prepare(s, a, b);
std::transform(s.begin(), s.end(), s.begin(),
[&](char c){return shift(c, a);
});
return process(s, a, b, repeat - 1);
};
int main()
{
SetConsoleOutputCP(1251);
std::string one("ВРМ");
std::string two("ТОР");
std::cout << process(one, 'А', 'Б', 1) << "\n" // ВГСН
<< process(two, 'А', 'Б', 2) << std::endl; // ГФБРТ
}