SKMP editorial

what is wrong with my solution it passes all the tc and i have check edge cases tooo –
question –
Smallest KMP - Problems | CodeChef

ll t,n;

string s,p;

cin>>t;

while(t--){

    cin>>s>>p;

    n = s.size();

    string res = "";

    map<char,ll>freq;

    map<char,int>m;

    for(int i=0; i<n; i++) freq[s[i]]++;

    for(int i=0; i<n; i++) m[p[i]]++;

    for(auto it:freq){

        if(it.first<p[0]){

            if(m.find(it.first)!=m.end()){

                int cnt = m[it.first];

                for(int i=1; i<=it.second-cnt; i++) res+=it.first;

            }

            else{

                for(int i=1;i<=it.second;i++) res+=it.first;

            }

        }

        else if(it.first==p[0]){

            int cnt = 0;

            if(freq.find(p[0])!=freq.end()){

            }

            cnt = m[p[0]];

            for(int i=1; i<=it.second-cnt; i++) res+=it.first;

            res+=p;

        }

        else if(it.first>p[0]){

            if(m.find(it.first)!=m.end()){

                int cnt = m[it.first];

                for(int i=1; i<=it.second-cnt; i++) res+=it.first;

            }

            else {

                for(int i=1; i<=it.second; i++) res+=it.first;

            }

        }

    }

    cout<<res<<endl;

}