#include <iostream>
#include <vector>
#include <map>
#include <iomanip>

using namespace std;

int main()
{
	setlocale(LC_ALL,"");
	/* feladat megoldáshoz használt változók */
	string p,f,v,r;
	map<char, int> betuk;
	int ED,KN;

	cout << "Kérem a robot parancsait (pl. EEEKDKEKDKEKDDNN): ";
	cin >> p;
	betuk['E'] = 0; betuk['D'] = 0; betuk['K'] = 0; betuk['N'] = 0;

	for (auto& c : p)	/* a karakterek (c) a parancsból (p) a kulcsok --> betuk['E'] pl. */
	{
		betuk[c]++;
	}

	for (auto elem:betuk)
	{
		cout << elem.first << ": " << elem.second << endl;
	}

	ED=abs(betuk['E']-betuk['D']);
	KN=abs(betuk['K']-betuk['N']);
    f,v="";
    if(betuk['E']>betuk['D'])
    {
        for(auto i=0;i<ED;i++) f+='E';
    }
    else
    {
        for(auto i=0;i<ED;i++) f+='D';
    }
    if(betuk['K']>betuk['N'])
    {
        for(auto i=0;i<KN;i++) v+='K';
    }
    else
    {
        for(auto i=0;i<KN;i++) v+='N';
    }
    r=f+v;
    cout << "Egy legrövidebb út parancsszava: " << r << endl;

    cout << "Csak kiírás, változó nélkül:" << endl;
    //Ha későbbi célokra nem kell ez a rövid parancs, akkor így is mehetett volna a kiírás:
    cout.width(ED);
    betuk['E']>betuk['D'] ? cout.fill('E'):cout.fill('D');
    cout << "";
    cout.width(KN);
    betuk['K']>betuk['N'] ? cout.fill('K'):cout.fill('N');
    cout << "" << endl;

	return 0;
}
