#include<bits/stdc++.h>

using namespace std;

long long y=1;
long long yy = 1;

void porveri(vector<long long> pom, long long k, vector<char> a, long long n) {
    bool t = true;
   // cout << "provera: ";

    if(k>1) {

    for(int i=0; i<k-1; i++) {

        if(pom[i]!=pom[i+1]) {
            t = false;
            break;
        }

    }
    if(t) {
        y++;
    }
    cout << y << " ";
   }
   else {
    yy++;
    cout << yy << " ";
   }


   // cout << t << " dasda" << y;

    //cout << endl;
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    long long n, k;
    cin >> n >> k;
    vector<char> a(n);
    for(int i=0;i<n;i++) {
        cin >> a[i];
    }
    /*for(int i=0; i<n; i++) {
        cout << (int)a[i] - 97  << " ";
    }*/

    vector<long long> pom(k+1);
    //pom[(int)a[0] - 97] ++;
    //cout<<endl<<"start" << endl;
    if(k==2) {
        cout << "1 ";

    for(int i=1;i<n;i++) {
            if((int)a[i-1] - 97 == (int)a[i] - 97) {
                cout << "1 ";
   //cout << (int)a[i] - 97 << ". ";
            }
            else {
                cout << "2 ";
                for(int j=i+1;j<n;j++) {
                    cout << "2 ";
                }
                return 0;
            }
        }
   } else {
    for(int i=0; i<n; i++) {
        pom[(int)a[i] - 97] ++;

        porveri(pom, k, a, n); }
        //cout << *max_element(pom.begin(), pom.begin()+k) << "mm ";
        //cout << *max(pom.begin(), pom.begin()+k) << " max ";
        /*for(int i=0;i<k;i++) {
            cout << "." << pom[i] << " ";
        }
        cout<< endl;*/
        /*if(pom[(int)a[i]-97] == pom[(int)a[i+1]-97]) {
            cout << pom[(int)a[i]-97] << " ";
        }
        else if(i == n-1) {
                if()
            cout<<pom[(int)a[i] - 97] << " ";
        }
        else {
            cout << pom[(int)a[i+1]-97] << " ";
        }*/
    }

    //cout << endl;
    /*for(int i=0; i<k; i++) {
        cout << pom[i]  << " ";
    }*/
   /* long long br=2;
        long long kk=0;
    for(int i=0;i<n;i++) {
        if(i<k-1) {
            cout << "1 ";
            continue;
        }
        if(i<k*br) {
                kk++;

            cout << br << " ";
            if(kk==k) {
                    br++;
                    kk=0;
                }
        }
    }*/
   /* vector<vector<long long>> ppm(n, vector<long long>(k));
    for(int i=0;i<n;i++) {

        for(int j=0; j<k; j++)
        {
            ppm[i][j] = 0;
        }


    }
    for(int i=0; i<=n; i++) {
        for(int j=0; j<i; j++) {
            cout << a[j];
        }
        cout << endl;
    }
    cout << endl;
    for(int i=0;i<n;i++) {

        for(int j=0; j<k; j++)
        {
            cout << ppm[i][j] << " ";
        }
cout << endl;

    }*/
    /*for(int i=0;i<n;i++) {
        cout << a[i];
    }*/
    //const long long inff = numeric_limits<long long>::max();
    //cout << inff;
    return 0;
}