#include <bits/stdc++.h>
using namespace std;
const long long int mx = 70, Mod = 1e9 + 7, mxx = 350000;
int n;
int get(int x, int y, int z) {
  if (x > y) swap(x, y);
  if (x > z) swap(x, z);
  if (y > z) swap(y, z);
  return x * mx * mx + y * mx + z;
}
bool mark[mxx];
vector<int> e[mxx];
int dp[mxx];
int par[mxx];
short d[mx][mx];
vector<pair<int, int> > res;
void connect(int u, int v) {
  e[u].push_back(v);
  e[v].push_back(u);
}
void bfs(int v) {
  mark[v] = 1;
  vector<int> vc;
  vc.clear();
  vc.push_back(v);
  for (int i = 0; i < vc.size(); i++)
    for (int u : e[v = vc[i]])
      if (!mark[u]) mark[u] = 1, vc.push_back(u), par[u] = v;
}
void move(int u, int v) {
  short a[3], b[3];
  bool ma[3], mb[3];
  for (int i = 0; i < 3; i++) {
    a[i] = u % mx;
    b[i] = v % mx;
    u /= mx;
    v /= mx;
    ma[i] = 0;
    mb[i] = 0;
  }
  for (int i = 0; i < 3; i++)
    for (int j = 0; j < 3; j++)
      if (a[i] == b[j]) ma[i] = 1, mb[j] = 1;
  for (int i = 0; i < 3; i++) {
    if (!ma[i]) u = a[i];
    if (!mb[i]) v = b[i];
  }
  res.push_back(make_pair(u + 1, v + 1));
}
int main() {
  ios_base::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  int x, y, z, u;
  cin >> n >> x >> y >> z;
  x--, y--, z--;
  string s;
  for (int i = 0; i < n; i++) {
    cin >> s;
    for (int j = 0; j < n; j++) d[i][j] = s[j] - 'a' + 1;
  }
  for (int i = 0; i < n; i++) {
    for (int j = i + 1; j < n; j++) {
      for (int k = j + 1; k < n; k++) {
        u = get(i, j, k);
        for (int v = min(min(i, j), k) + 1; v < n; v++)
          if (v != i && v != j && v != k) {
            if (d[v][i] == d[j][k] && v > i) connect(u, get(v, j, k));
            if (d[v][j] == d[i][k] && v > j) connect(u, get(v, i, k));
            if (d[v][k] == d[i][j] && v > k) connect(u, get(v, i, j));
          }
      }
    }
  }
  u = get(x, y, z);
  if (u == get(0, 1, 2)) return cout << "0\n", 0;
  bfs(get(0, 1, 2));
  if (!par[u]) return cout << "-1", 0;
  while (par[u]) {
    move(u, par[u]);
    u = par[u];
  }
  cout << res.size() << '\n';
  for (pair<int, int> p : res) cout << p.first << ' ' << p.second << '\n';
  return 0;
}
