class MineField {
public:
vector <string> getMineField( string mineLocations ) {
vector<string> map;
for (int i=0; i<9; i++) map.push_back("000000000");
for (int i=0; i<mineLocations.length(); i++) {
if (mineLocations[i] == '(') {
string temp = "";
int x, y;
for (i+=1;;i++) {
if (mineLocations[i]==',') break;
temp += mineLocations[i];
}
stringstream ss;
ss << temp; ss >> x;
temp = "";
for (i+=1;;i++) {
if (mineLocations[i]==')') break;
temp += mineLocations[i];
}
stringstream s2;
s2 << temp; s2 >> y;
map[x][y] = 'M';
}
}
int dx[] = {-1,0,1};
int dy[] = {-1,0,1};
for (int i=0; i<map.size(); i++) {
for (int j=0; j<9; j++) {
if (map[i][j]=='M') continue;
int cnt = 0;
for (int k=0; k<3; k++) for (int l=0; l<3; l++) {
if (k == 1 && l == 1) continue;
int nx = dx[k]+i, ny = dy[l]+j;
if (nx < 9 && nx >= 0 && ny < 9 && ny >= 0 && map[nx][ny] == 'M')
cnt++;
}
map[i][j] = cnt + '0';
}
}
return map;
}
};