#include <bits/stdc++.h>
using namespace std;
int r, c, visited[21][21], ret = 1, y, x, cnt[26];
int dy[] = {-1, 0, 1, 0};
int dx[] = {0, 1, 0, -1};
char a[21][21];
queue<pair<int, int>> q;
int main(){
cin >> r >> c;
for(int i = 0; i < r; i++){
for(int j = 0; j < c; j++){
cin >> a[i][j];
}
}
q.push({0, 0});
visited[0][0] = 1;
cnt[a[0][0] - 'a']++;
while(q.size()){
tie(y, x) = q.front();
q.pop();
for(int i = 0; i < 4; i++){
int ny = dy[i] + y;
int nx = dx[i] + x;
if(ny < 0 || ny >= r || nx < 0 || nx >= c || visited[ny][nx] || cnt[a[ny][nx] - 'a']) continue;
visited[ny][nx] = visited[y][x] + 1;
ret = max(ret, visited[ny][nx]);
cout << ny << ' ' << nx << '\n';
q.push({ny, nx});
}
}
cout << ret << '\n';
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmludCByLCBjLCB2aXNpdGVkWzIxXVsyMV0sIHJldCA9IDEsIHksIHgsIGNudFsyNl07CmludCBkeVtdID0gey0xLCAwLCAxLCAwfTsKaW50IGR4W10gPSB7MCwgMSwgMCwgLTF9OwpjaGFyIGFbMjFdWzIxXTsKcXVldWU8cGFpcjxpbnQsIGludD4+IHE7CmludCBtYWluKCl7CiAgICBjaW4gPj4gciA+PiBjOwogICAgZm9yKGludCBpID0gMDsgaSA8IHI7IGkrKyl7CiAgICAgICAgZm9yKGludCBqID0gMDsgaiA8IGM7IGorKyl7CiAgICAgICAgICAgIGNpbiA+PiBhW2ldW2pdOwogICAgICAgIH0KICAgIH0KICAgIHEucHVzaCh7MCwgMH0pOwogICAgdmlzaXRlZFswXVswXSA9IDE7CiAgICBjbnRbYVswXVswXSAtICdhJ10rKzsKICAgIHdoaWxlKHEuc2l6ZSgpKXsKICAgICAgICB0aWUoeSwgeCkgPSBxLmZyb250KCk7CiAgICAgICAgcS5wb3AoKTsKICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgNDsgaSsrKXsKICAgICAgICAgICAgaW50IG55ID0gZHlbaV0gKyB5OwogICAgICAgICAgICBpbnQgbnggPSBkeFtpXSArIHg7CiAgICAgICAgICAgIGlmKG55IDwgMCB8fCBueSA+PSByIHx8IG54IDwgMCB8fCBueCA+PSBjIHx8IHZpc2l0ZWRbbnldW254XSB8fCBjbnRbYVtueV1bbnhdIC0gJ2EnXSkgY29udGludWU7CiAgICAgICAgICAgIHZpc2l0ZWRbbnldW254XSA9IHZpc2l0ZWRbeV1beF0gKyAxOwogICAgICAgICAgICByZXQgPSBtYXgocmV0LCB2aXNpdGVkW255XVtueF0pOwogICAgICAgICAgICBjb3V0IDw8IG55IDw8ICcgJyA8PCBueCA8PCAnXG4nOwogICAgICAgICAgICBxLnB1c2goe255LCBueH0pOwogICAgICAgIH0KICAgIH0KICAgIGNvdXQgPDwgcmV0IDw8ICdcbic7Cn0=