//zadatak kajak-e
#include <iostream>
using namespace std;
int c2n(char unos){
    if(unos=='9') return(9); else
    if(unos=='8') return(8); else
    if(unos=='7') return(7); else
    if(unos=='6') return(6); else
    if(unos=='5') return(5); else
    if(unos=='4') return(4); else
    if(unos=='3') return(3); else
    if(unos=='2') return(2); else
    if(unos=='1') return(1); else
    return(0);
}
int main(){
    unsigned short int r,s;
    char snimka[51][51];
    unsigned int pozicije[51],mjesta[51];
    unsigned int i,j,c(1);
    bool d;
    struct s_kajak{
        unsigned short int pozicija;
        unsigned short int mjesto;
    };
    s_kajak kajak[10];
    // učitavanje varijabli
    cin >> r >> s;
    // postavljanje svih kajaka na početak
    for(i=0;i<10;i++){ kajak[i].pozicija=0; kajak[i].mjesto=i; };
    // unos satelitske snimke
    for(i=1;i<=r;i++){
        for(j=1;j<=s;j++){
            cin >> snimka[i][j];
        }
    }
    // određivanje udaljenosti svakog kajaka od cilja
    for(i=1;i<=r;i++){
        for(j=1;j<=s;j++){
            if(snimka[i][j]>='1' && snimka[i][j]<='9' ){
                    //cout << "ucitan kajak " << snimka[i][j] << "\n";
                    kajak[c2n(snimka[i][j])].pozicija=j;
                }
            }
        }
    // određivanje konačnog mjesta u poretku
    for(i=50;i>0;i--){
        for(j=1;j<=r;j++){
            if(kajak[j].pozicija==i){
                kajak[j].mjesto=c;
                d=true;
            }
        }
        if(d==true){
            c++;
            d=false;
        }
    }
    // ispis poretka
    for(i=1;i<=r;i++){
        if(kajak[i].pozicija>0 && kajak[i].mjesto>0){
            cout << kajak[i].mjesto;
            if(i<r) cout << "\n";
        }
    }
    // kraj
    return(0);
    

}
