#include <cstdio> int type; int m, n; char crops[500][500]; char field[500][500]; int zone_size[50]; int zones = 1; int max_zone = 0; int di[5] = {-1, 0, 1, 0}, dj[5] = {0, 1, 0, -1}; int vi, vj; void mark_zone(int i, int j, char c) { crops[i][j] = crops[i][j] - 'a' + 'A'; zone_size[zones]++; field[i][j] = zones; for (int k=0; k<4; ++k) { vi = i + di[k]; vj = j + dj[k]; if (crops[vi][vj] == c) mark_zone(vi, vj, c); } } void largest() { for (int i=1; i<m; ++i) for (int j=1; j<n; ++j) if (crops[i][j] >= 'a') { mark_zone(i,j, crops[i][j]); if (zone_size[zones] > max_zone) max_zone = zone_size[zones]; zones++; } } int new_size(int i, int j) { int s1 = 1; int s2 = 1; if (crops[i][j-1] == crops[i][j+1]) s1 += zone_size[field[i][j-1]] + zone_size[field[i][j+1]] if (crops[i-1][j] == crops[i+1][j]) s1 += zone_size[field[i-1][j]] + zone_size[field[i+1][j]] return 0; } void enlarge() { largest(); int s; for (int i=0; i<m; ++i) for (int j=0; j<n; ++j) { s = new_size(i, j); if (s > max_zone) max_zone = s; } } int main () { scanf("%d\n", &type); scanf("%d %d", &m, &n); for (int i=1; i<=m; ++i) { scanf("\n"); for (int j=1; j<=n; ++j) scanf("%c", &crops[i][j]); } if (type == 1) { largest(); printf("%d", max_zone); } else enlarge(); return 0; }