#include #include #include #include using namespace std; using P = pair; int main(){ int h, w; cin >> h >> w; vector s(h); for(auto &it: s) cin >> it; vector>> cnt(h+w, vector>(26)); cnt[0][s[0][0]-'a'].emplace_back(0, 0); vector> pre(h, vector

(w, {-1, -1})); for(int phase = 0; phase < h+w-1; phase++){ for(int x = 0; x < 26; x++){ if(cnt[phase][x].size() == 0) continue; for(auto &it: cnt[phase][x]){ int i = it.first, j = it.second; // cerr << i << " " << j << ", "; if(i+1 < h){ cnt[phase+1][s[i+1][j]-'a'].emplace_back(i+1, j); pre[i+1][j] = {i, j}; } if(j+1 < w){ cnt[phase+1][s[i][j+1]-'a'].emplace_back(i, j+1); pre[i][j+1] = {i, j}; } } // cerr << endl; break; } } string ans = ""; P cur = {h-1, w-1}; while(cur != P{-1, -1}){ ans += s[cur.first][cur.second]; cur = pre[cur.first][cur.second]; } reverse(ans.begin(), ans.end()); cout << ans << endl; return 0; }