#include <iostream>
#include <vector>
#include <map>
#include <string>
#include <algorithm>
// Liste der bekannten Substrings
const std::map<int, std::vector<std::string>> mTeilstrings = {
{1, {"[8A]", "[UKE]"}},
{2, {"[Dings da]", "[DingsBums]"}},
{3, {"[GF]", "[MOD]", "[MOD3]", "[MOD6]"}},
{4, {"[Weiss]", "[Rot]", "[Orange-Blau]"}}
};
auto parse_line(std::string line,
const std::map<int, std::vector<std::string>> &substring_groups)
{
std::vector<std::pair<std::string, int>> result;
for (auto const& kv : substring_groups)
{
for (auto const &substring: kv.second)
{
std::string::size_type pos = 0;
while ((pos = line.find(substring, pos)) != std::string::npos)
{
result.push_back(std::make_pair(substring, kv.first));
pos += substring.length();
}
}
}
return result;
}
int main()
{
for(std::string line; std::getline(std::cin, line);)
{
auto substring_pairs = parse_line(line, mTeilstrings);
std::sort(substring_pairs.begin(), substring_pairs.end(),
[](auto left_pair, auto right_pair){return left_pair.second > right_pair.second;});
std::cout << "Zeile \"" << line << "\" wird zerlegt in '";
for (auto pair: substring_pairs)
std::cout << "{\"" << pair.first << "\", " << pair.second << "}, ";
std::cout << '\n';
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8bWFwPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKLy8gTGlzdGUgZGVyIGJla2FubnRlbiBTdWJzdHJpbmdzCmNvbnN0IHN0ZDo6bWFwPGludCwgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+PiBtVGVpbHN0cmluZ3MgPSB7CiAgICB7MSwgeyJbOEFdIiwgIltVS0VdIn19LAogICAgezIsIHsiW0RpbmdzIGRhXSIsICJbRGluZ3NCdW1zXSJ9fSwKICAgIHszLCB7IltHRl0iLCAiW01PRF0iLCAiW01PRDNdIiwgIltNT0Q2XSJ9fSwKICAgIHs0LCB7IltXZWlzc10iLCAiW1JvdF0iLCAiW09yYW5nZS1CbGF1XSJ9fQp9OwoKCmF1dG8gcGFyc2VfbGluZShzdGQ6OnN0cmluZyBsaW5lLCAKCSAgIAkJICAgY29uc3Qgc3RkOjptYXA8aW50LCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4+ICZzdWJzdHJpbmdfZ3JvdXBzKQp7CglzdGQ6OnZlY3RvcjxzdGQ6OnBhaXI8c3RkOjpzdHJpbmcsIGludD4+IHJlc3VsdDsKCWZvciAoYXV0byBjb25zdCYga3YgOiBzdWJzdHJpbmdfZ3JvdXBzKQoJewoJCWZvciAoYXV0byBjb25zdCAmc3Vic3RyaW5nOiAga3Yuc2Vjb25kKQoJCXsKCQkJc3RkOjpzdHJpbmc6OnNpemVfdHlwZSBwb3MgPSAwOwoJCQl3aGlsZSAoKHBvcyA9IGxpbmUuZmluZChzdWJzdHJpbmcsIHBvcykpICE9IHN0ZDo6c3RyaW5nOjpucG9zKSAKCQkJewoJCQkJcmVzdWx0LnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihzdWJzdHJpbmcsIGt2LmZpcnN0KSk7CgkJCQlwb3MgKz0gc3Vic3RyaW5nLmxlbmd0aCgpOwoJCQl9CgkJfQoJfQoJcmV0dXJuIHJlc3VsdDsKfQoKaW50IG1haW4oKQp7Cglmb3Ioc3RkOjpzdHJpbmcgbGluZTsgc3RkOjpnZXRsaW5lKHN0ZDo6Y2luLCBsaW5lKTspCgl7CgkJYXV0byBzdWJzdHJpbmdfcGFpcnMgPSBwYXJzZV9saW5lKGxpbmUsIG1UZWlsc3RyaW5ncyk7CgkJc3RkOjpzb3J0KHN1YnN0cmluZ19wYWlycy5iZWdpbigpLCBzdWJzdHJpbmdfcGFpcnMuZW5kKCksIAoJCSAgICAgICAgICBbXShhdXRvIGxlZnRfcGFpciwgYXV0byByaWdodF9wYWlyKXtyZXR1cm4gbGVmdF9wYWlyLnNlY29uZCA+IHJpZ2h0X3BhaXIuc2Vjb25kO30pOwoJCXN0ZDo6Y291dCA8PCAiWmVpbGUgXCIiIDw8IGxpbmUgPDwgIlwiIHdpcmQgemVybGVndCBpbiAnIjsKCQlmb3IgKGF1dG8gcGFpcjogc3Vic3RyaW5nX3BhaXJzKQoJCQlzdGQ6OmNvdXQgPDwgIntcIiIgPDwgcGFpci5maXJzdCA8PCAiXCIsICIgPDwgcGFpci5zZWNvbmQgPDwgIn0sICI7CgkJc3RkOjpjb3V0IDw8ICdcbic7Cgl9Cn0=
Zeile "[8A][Dings da][Orange-Blau]" wird zerlegt in '{"[Orange-Blau]", 4}, {"[Dings da]", 2}, {"[8A]", 1},
Zeile "[MOD][Weiss][UKE]" wird zerlegt in '{"[Weiss]", 4}, {"[MOD]", 3}, {"[UKE]", 1},
Zeile "[GF][MOD3][Dings da]" wird zerlegt in '{"[GF]", 3}, {"[MOD3]", 3}, {"[Dings da]", 2},
Zeile "[MOD][Black][UKE]" wird zerlegt in '{"[MOD]", 3}, {"[UKE]", 1},
Zeile "[GF][MOD3][Dings da][GF][MOD3][Dings da]" wird zerlegt in '{"[GF]", 3}, {"[GF]", 3}, {"[MOD3]", 3}, {"[MOD3]", 3}, {"[Dings da]", 2}, {"[Dings da]", 2},