#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:1000000000")
using namespace std;
const double pi = acos(-1.0);
const int size = 200;
char field[size][size];
bool isfree(int x, int y) { return field[x][y] == '.'; }
int n;
bool used[size];
int pr[size];
bool dfs(int v) {
  if (used[v]) return false;
  used[v] = true;
  for (int i = 0; i < n; i++)
    if (isfree(v, i) && (pr[i] == -1 || dfs(pr[i]))) {
      pr[i] = v;
      return true;
    }
  return false;
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++) scanf("%s", field[i]);
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
      bool flag = false;
      for (int k = 0; k < n; k++) flag = flag || isfree(i, k) || isfree(k, j);
      if (!flag) {
        printf("-1\n");
        return 0;
      }
    }
  }
  vector<pair<int, int> > ans;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++)
      if (isfree(i, j)) {
        ans.push_back(make_pair(i, j));
        break;
      }
  }
  if ((int)ans.size() != n) {
    ans.clear();
    for (int i = 0; i < n; i++)
      for (int j = 0; j < n; j++) {
        if (isfree(j, i)) {
          ans.push_back(make_pair(j, i));
          break;
        }
      }
  }
  for (int i = 0; i < (int)ans.size(); i++)
    cout << ans[i].first + 1 << ' ' << ans[i].second + 1 << endl;
  return 0;
}
