#include <bits/stdc++.h>
using namespace std;
const int MAX_N = 100000;
pair<int, int> as[MAX_N], ans[MAX_N * 2];
int p2ds[MAX_N], d2ps[MAX_N];
bool lns[MAX_N];
bool lucky(int n) {
  if (n <= 0) return false;
  while (n) {
    int d = n % 10;
    if (d != 4 && d != 7) return false;
    n /= 10;
  }
  return true;
}
void swapnums(int d0, int d1, pair<int, int> &p) {
  int l0 = d2ps[d0], l1 = d2ps[d1];
  p = pair<int, int>(l0, l1);
  swap(d2ps[d0], d2ps[d1]);
  swap(p2ds[l0], p2ds[l1]);
}
int main() {
  int n;
  scanf("%d", &n);
  for (int i = 0; i < n; i++) scanf("%d", &as[i].first), as[i].second = i;
  sort(as, as + n);
  int ldi = -1;
  for (int di = 0; di < n; di++) {
    int &pi = as[di].second;
    lns[di] = lucky(as[di].first);
    d2ps[di] = pi;
    p2ds[pi] = di;
    if (lns[di]) ldi = di;
  }
  int m = 0;
  for (int di0 = 0; di0 < n; di0++) {
    int pi0 = d2ps[di0];
    if (di0 != ldi && pi0 != di0) {
      int di1 = p2ds[di0];
      if (lns[di0] || lns[di1]) {
        swapnums(di0, di1, ans[m++]);
      } else {
        if (ldi < 0) {
          puts("-1");
          return 0;
        }
        swapnums(di1, ldi, ans[m++]);
        swapnums(ldi, di0, ans[m++]);
      }
    }
  }
  printf("%d\n", m);
  for (int i = 0; i < m; i++)
    printf("%d %d\n", ans[i].first + 1, ans[i].second + 1);
  return 0;
}
