#include <bits/stdc++.h>
using namespace std;
int n, m, a[10][10], visited[10][10], ret;
vector<pair<int, int>> wallList, virusList;
int dy[] = {-1, 0, 1, 0};
int dx[] = {0, 1, 0, -1};
void dfs(int y, int x){
if(a[y][x] == 1) return;
visited[y][x] = 1;
for(int i = 0; i < 4; i++){
int ny = y + dy[i];
int nx = x + dx[i];
if(ny < 0 || ny >= n || nx < 0 || nx >= m || visited[ny][nx]) continue;
dfs(ny, nx);
}
}
int solve(){
fill(&visited[0][0], &visited[0][0] + 10 * 10, 0);
for(auto b : virusList){
dfs(b.first, b.second);
}
int cnt = 0;
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
if(!visited[i][j] && a[i][j] == 0) cnt++;
}
}
return cnt;
}
int main(){
cin >> n >> m;
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
cin >> a[i][j];
if(a[i][j] == 0) wallList.push_back({i, j});
else if(a[i][j] == 2) virusList.push_back({i, j});
}
}
for(int i = 0; i < wallList.size(); i++){
for(int j = 0; j < i; j++){
for(int k = 0; k < j; k++){
a[wallList[i].first][wallList[i].second] = 1;
a[wallList[j].first][wallList[j].second] = 1;
a[wallList[k].first][wallList[k].second] = 1;
ret = max(ret, solve());
a[wallList[i].first][wallList[i].second] = 0;
a[wallList[j].first][wallList[j].second] = 0;
a[wallList[k].first][wallList[k].second] = 0;
}
}
}
cout << ret << '\n';
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmludCBuLCBtLCBhWzEwXVsxMF0sIHZpc2l0ZWRbMTBdWzEwXSwgcmV0Owp2ZWN0b3I8cGFpcjxpbnQsIGludD4+IHdhbGxMaXN0LCB2aXJ1c0xpc3Q7CmludCBkeVtdID0gey0xLCAwLCAxLCAwfTsKaW50IGR4W10gPSB7MCwgMSwgMCwgLTF9OwoKdm9pZCBkZnMoaW50IHksIGludCB4KXsKICAgIGlmKGFbeV1beF0gPT0gMSkgcmV0dXJuOwogICAgdmlzaXRlZFt5XVt4XSA9IDE7CiAgICBmb3IoaW50IGkgPSAwOyBpIDwgNDsgaSsrKXsKICAgICAgICBpbnQgbnkgPSB5ICsgZHlbaV07CiAgICAgICAgaW50IG54ID0geCArIGR4W2ldOwogICAgICAgIGlmKG55IDwgMCB8fCBueSA+PSBuIHx8IG54IDwgMCB8fCBueCA+PSBtIHx8IHZpc2l0ZWRbbnldW254XSkgY29udGludWU7CiAgICAgICAgZGZzKG55LCBueCk7CiAgICB9Cn0KCmludCBzb2x2ZSgpewogICAgZmlsbCgmdmlzaXRlZFswXVswXSwgJnZpc2l0ZWRbMF1bMF0gKyAxMCAqIDEwLCAwKTsKICAgIGZvcihhdXRvIGIgOiB2aXJ1c0xpc3QpewogICAgICAgIGRmcyhiLmZpcnN0LCBiLnNlY29uZCk7CiAgICB9CiAgICBpbnQgY250ID0gMDsKICAgIGZvcihpbnQgaSA9IDA7IGkgPCBuOyBpKyspewogICAgICAgIGZvcihpbnQgaiA9IDA7IGogPCBtOyBqKyspewogICAgICAgICAgICBpZighdmlzaXRlZFtpXVtqXSAmJiBhW2ldW2pdID09IDApIGNudCsrOyAKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gY250Owp9CgppbnQgbWFpbigpewogICAgY2luID4+IG4gPj4gbTsKICAgIGZvcihpbnQgaSA9IDA7IGkgPCBuOyBpKyspewogICAgICAgIGZvcihpbnQgaiA9IDA7IGogPCBtOyBqKyspewogICAgICAgICAgICBjaW4gPj4gYVtpXVtqXTsKICAgICAgICAgICAgaWYoYVtpXVtqXSA9PSAwKSB3YWxsTGlzdC5wdXNoX2JhY2soe2ksIGp9KTsKICAgICAgICAgICAgZWxzZSBpZihhW2ldW2pdID09IDIpIHZpcnVzTGlzdC5wdXNoX2JhY2soe2ksIGp9KTsKICAgICAgICB9CiAgICB9CiAgICBmb3IoaW50IGkgPSAwOyBpIDwgd2FsbExpc3Quc2l6ZSgpOyBpKyspewogICAgICAgIGZvcihpbnQgaiA9IDA7IGogPCBpOyBqKyspewogICAgICAgICAgICBmb3IoaW50IGsgPSAwOyBrIDwgajsgaysrKXsKICAgICAgICAgICAgICAgIGFbd2FsbExpc3RbaV0uZmlyc3RdW3dhbGxMaXN0W2ldLnNlY29uZF0gPSAxOwogICAgICAgICAgICAgICAgYVt3YWxsTGlzdFtqXS5maXJzdF1bd2FsbExpc3Rbal0uc2Vjb25kXSA9IDE7CiAgICAgICAgICAgICAgICBhW3dhbGxMaXN0W2tdLmZpcnN0XVt3YWxsTGlzdFtrXS5zZWNvbmRdID0gMTsKICAgICAgICAgICAgICAgIHJldCA9IG1heChyZXQsIHNvbHZlKCkpOwogICAgICAgICAgICAgICAgYVt3YWxsTGlzdFtpXS5maXJzdF1bd2FsbExpc3RbaV0uc2Vjb25kXSA9IDA7CiAgICAgICAgICAgICAgICBhW3dhbGxMaXN0W2pdLmZpcnN0XVt3YWxsTGlzdFtqXS5zZWNvbmRdID0gMDsKICAgICAgICAgICAgICAgIGFbd2FsbExpc3Rba10uZmlyc3RdW3dhbGxMaXN0W2tdLnNlY29uZF0gPSAwOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgY291dCA8PCByZXQgPDwgJ1xuJzsKfQ==