#include <iostream>
#include <map>
#include <vector>
#include <cmath>

using namespace std;

int magic(map<char, int> &v, const string str) // arvutab s6na arvulise v22rtuse
{
    int sum = 0, i = 0;
    for (auto it = str.rbegin(); it != str.rend(); ++it, ++i)
    {
        sum += pow(10.0, i) * v[*it];
    }
    return sum;
}

bool unique(map<char, int> &v) // kontrollib kas k6ik numbrid on unikaalsed
{
    for (auto it1 = v.begin(); it1 != v.end(); ++it1)
    {
        auto it2 = it1;
        ++it2;
        for (;it2 != v.end(); ++it2)
        {
            if (it1->second == it2->second)
            {
                return false;
            }
        }
    }
    return true;
}

int main()
{
    map<char, int> v;
    string str("KRONAFRANK");
    for (int i = 0; i < str.size(); i++) // lisab kasutatavad t2hed
    {
        v[str[i]] = 0;
    }

    bool end = false;
    while (!end)
    {
        if ((3 * magic(v, "KRONA") == magic(v, "FRANK")) && unique(v)) // kontrollib lahendust
        {
            for (auto it = v.begin(); it != v.end(); ++it)
            {
                cout << it->first << ":" << it->second << "; ";
            }
            cout << endl;
        }

        v.begin()->second++; // suurendab esimest numbrit
        for (auto it = v.begin(); it != v.end(); ++it)
        {
            if (it->second > 9) // carry
            {
                auto it2 = it;
                it2++;
                if (it2 != v.end())
                {
                    it->second = 0;
                    it2->second++;
                }
                else // l6petamine
                {
                    end = true;
                }
            }
            else
            {
                break;
            }
        }
    }
    return 0;
}
