// Arup Guha
// 6/12/2023
// Solution to Kattis Problem: Message
// https://open.kattis.com/problems/meddelande

using namespace std;
#include <bits/stdc++.h>

// Can only move in two ways.
const vector<int> DR = {0,1};
const vector<int> DC = {1,0};

// Global grid
int r, c;
vector<string> grid;

// Function prototypes.
string solve();

int main() {

    // Read in the grid.
    cin >> r >> c;
    for (int i=0; i<r; i++) {
        string tmp;
        cin >> tmp;
        grid.push_back(tmp);
    }

    // Solve it!
    cout << solve() << endl;

    return 0;
}

string solve() {

    // Copy all letter locations.
    vector<pair<int,int>> locs;
    for (int i=0; i<r; i++)
        for (int j=0; j<c; j++)
            if (grid[i][j]>='a' && grid[i][j]<='z')
                locs.push_back(pair<int,int>{i,j});

    // Sort it!
    sort(locs.begin(), locs.end());

    // Build it.
    string res = "";
    for (int i=0; i<locs.size(); i++)
        res = res + grid[locs[i].first][locs[i].second];
    return res;
}
