#include <bits/stdc++.h>
using namespace std;
const int Maxn = 70 + 5, Mod = 1e9 + 7;
int n, x, y, z, h[Maxn][Maxn][Maxn];
string col[Maxn];
pair<int, int> par[Maxn][Maxn][Maxn];
queue<pair<int, pair<int, int> > > q;
vector<pair<int, int> > ans;
bool mrk[Maxn][Maxn][Maxn];
void Find_Ans() {
  int x = 1, y = 2, z = 3;
  while (1) {
    int type = par[x][y][z].first, ver = par[x][y][z].second;
    if (ver == -1) break;
    if (type == 1) {
      ans.push_back({ver, x});
      x = ver;
    } else if (type == 2) {
      ans.push_back({ver, y});
      y = ver;
    } else {
      ans.push_back({ver, z});
      z = ver;
    }
  }
}
void Bfs() {
  while (q.size()) {
    int a = q.front().first, b = q.front().second.first,
        c = q.front().second.second;
    for (int i = 1; i <= n; i++) {
      if (i == a || i == b || i == c) {
        continue;
      }
      if (col[b][c] == col[a][i] && !mrk[i][b][c]) {
        mrk[i][b][c] = mrk[i][c][b] = 1;
        mrk[b][i][c] = mrk[b][c][i] = 1;
        mrk[c][i][b] = mrk[c][b][i] = 1;
        h[i][b][c] = h[i][c][b] = h[a][b][c] + 1;
        h[b][i][c] = h[b][c][i] = h[a][b][c] + 1;
        h[c][i][b] = h[c][b][i] = h[a][b][c] + 1;
        par[i][b][c] = par[i][c][b] = {1, a};
        par[b][i][c] = par[c][i][b] = {2, a};
        par[b][c][i] = par[c][b][i] = {3, a};
        q.push({i, {b, c}});
        q.push({b, {i, c}});
        q.push({c, {i, b}});
      }
    }
    q.pop();
  }
}
int main() {
  ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  cin >> n >> x >> y >> z;
  for (int i = 1; i <= n; i++) {
    cin >> col[i];
    col[i] = '!' + col[i];
  }
  mrk[x][y][z] = mrk[x][z][y] = 1;
  mrk[y][x][z] = mrk[y][z][x] = 1;
  mrk[z][x][y] = mrk[z][y][x] = 1;
  par[x][y][z] = par[x][z][y] = {-1, -1};
  par[y][x][z] = par[y][z][x] = {-1, -1};
  par[z][x][y] = par[z][y][x] = {-1, -1};
  q.push({x, {y, z}});
  q.push({y, {x, z}});
  q.push({z, {x, y}});
  Bfs();
  if (!mrk[1][2][3]) {
    cout << "-1\n";
    return 0;
  }
  Find_Ans();
  cout << ans.size() << '\n';
  for (int i = ans.size() - 1; 0 <= i; i--) {
    cout << ans[i].first << ' ' << ans[i].second << '\n';
  }
  return 0;
}
