#include <iostream>
#include <string>
#include <random>
#include <algorithm>
using std::cin;
using std::cout;
using std::cerr;
using std::endl;
class RandomCharGenerator {
private:
static std::string s_chars_;
private:
std::random_device rd_{};
std::default_random_engine r_eng_{rd_()};
std::uniform_int_distribution<int> char_dist_{
0, static_cast<int>(s_chars_.size())};
public:
RandomCharGenerator() = default;
auto getRandomChar() -> char { return s_chars_[char_dist_(r_eng_)]; }
auto setRandomString(std::string &str) -> void {
std::generate(std::begin(str), std::end(str),
[this] { return this->getRandomChar(); });
}
};
std::string RandomCharGenerator::s_chars_ = "abcdefghijklmnopqrstuvwxyz";
auto main() -> int {
RandomCharGenerator rand_char;
auto input = std::string{};
cin >> input;
auto generated = std::string(input.size(), ' ');
do {
rand_char.setRandomString(generated);
cout << generated << endl;
} while (input != generated);
cout << "We generated what you input" << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8cmFuZG9tPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKdXNpbmcgc3RkOjpjaW47CnVzaW5nIHN0ZDo6Y291dDsKdXNpbmcgc3RkOjpjZXJyOwp1c2luZyBzdGQ6OmVuZGw7CgpjbGFzcyBSYW5kb21DaGFyR2VuZXJhdG9yIHsKcHJpdmF0ZToKICBzdGF0aWMgc3RkOjpzdHJpbmcgc19jaGFyc187Cgpwcml2YXRlOgogIHN0ZDo6cmFuZG9tX2RldmljZSByZF97fTsKICBzdGQ6OmRlZmF1bHRfcmFuZG9tX2VuZ2luZSByX2VuZ197cmRfKCl9OwogIHN0ZDo6dW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPGludD4gY2hhcl9kaXN0X3sKICAgICAgMCwgc3RhdGljX2Nhc3Q8aW50PihzX2NoYXJzXy5zaXplKCkpfTsKCnB1YmxpYzoKICBSYW5kb21DaGFyR2VuZXJhdG9yKCkgPSBkZWZhdWx0OwoKICBhdXRvIGdldFJhbmRvbUNoYXIoKSAtPiBjaGFyIHsgcmV0dXJuIHNfY2hhcnNfW2NoYXJfZGlzdF8ocl9lbmdfKV07IH0KICBhdXRvIHNldFJhbmRvbVN0cmluZyhzdGQ6OnN0cmluZyAmc3RyKSAtPiB2b2lkIHsKICAgIHN0ZDo6Z2VuZXJhdGUoc3RkOjpiZWdpbihzdHIpLCBzdGQ6OmVuZChzdHIpLAogICAgICAgICAgICAgICAgICBbdGhpc10geyByZXR1cm4gdGhpcy0+Z2V0UmFuZG9tQ2hhcigpOyB9KTsKICB9Cn07CgpzdGQ6OnN0cmluZyBSYW5kb21DaGFyR2VuZXJhdG9yOjpzX2NoYXJzXyA9ICJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiI7CgphdXRvIG1haW4oKSAtPiBpbnQgewogIFJhbmRvbUNoYXJHZW5lcmF0b3IgcmFuZF9jaGFyOwoKICBhdXRvIGlucHV0ID0gc3RkOjpzdHJpbmd7fTsKCiAgY2luID4+IGlucHV0OwogIGF1dG8gZ2VuZXJhdGVkID0gc3RkOjpzdHJpbmcoaW5wdXQuc2l6ZSgpLCAnICcpOwoKICBkbyB7CiAgICByYW5kX2NoYXIuc2V0UmFuZG9tU3RyaW5nKGdlbmVyYXRlZCk7CiAgICBjb3V0IDw8IGdlbmVyYXRlZCA8PCBlbmRsOwogIH0gd2hpbGUgKGlucHV0ICE9IGdlbmVyYXRlZCk7CgogIGNvdXQgPDwgIldlIGdlbmVyYXRlZCB3aGF0IHlvdSBpbnB1dCIgPDwgZW5kbDsKICByZXR1cm4gMDsKfQ==