#include <bits/stdc++.h>
using namespace std;
long long n, m;
char c[1001][1001];
char a;
long long ans = 1;
char d;
int t, h;
char maxx(char a, char b) {
if (a > b) return a;
return b;
}
char minn(char a, char b) {
if (a < b) return a;
return b;
}
int main () {
cin >> n >> m;
for (int i = 1; i <= n; i ++) {
for (int j = 1; j <= m; j ++) {
cin >> c[i][j];
}
}
for (int i = 1; i <= n; i ++) {
for (int j = 1; j <= m; j ++) {
if (c[i][j] >= 'A') {
if (ans == 1) {
a = c[i][j], d = c[i][j], t = i, h = j, ans ++;
} else {
if ((t == i and a == c[i][j] and c[i][j + 1] >= c[i][j]) or (h == j and a == c[i][j] and c[i + 1][j] >= c[i][j] )
and (c[i + 1][j] != '#' or c[i][j + 1] != '#') and (c[i - 1][j] != '#' or c[i][j - 1] != '#') ) {
cout << a ;
return 0;
}//如果左右上下没有间隔,而字母一样(一定是最大字典序),输出一个即可。
a = maxx(c[i][j], a);//最大值
if (d >= a) d = ' ';//防止 d 等于 a 而判断结果错误,于是初始化。
if(c[i][j] < a) {d = maxx(minn(a , c[i][j]) , d);}
// }//次大值。
//cout << "a=" << a << " " << "d=" << d << endl;
}
}
// cout << "a=" << a << " " << "d=" << d << endl;
}
}
// sort(a,a + ans);
// for(int i = 0; i <= ans ; i ++) {
// cout << a;
// cout << ans << " ";
// sort(a + 1, a + ans + 1 , cmp);
// for(int i = 1; i <= ans; i ++) {
//// if(a[i] == ' ') continue;
// cout << a;
// }
// cout << "A";
//cout << d;
//cout << t << " ";
if (a == d or n >= 20 ) cout << a;
else cout << a << d;
return 0;
}
record,WA 了点#6,给个 hack,谢谢!