#include <bits/stdc++.h>
using namespace std;
bool lucky(int a) {
  while (a) {
    if (a % 10 != 4 && a % 10 != 7) return 0;
    a /= 10;
  }
  return 1;
}
int n, q;
int t[100100], where[100100];
pair<int, int> a[100100], res[100100];
void sw(int a, int b) {
  res[q++] = make_pair(a, b);
  swap(t[a], t[b]);
  where[t[a]] = a;
  where[t[b]] = b;
}
int main() {
  bool ok = 0;
  scanf("%d", &n);
  for (int i = 0; i < (n); i++) scanf("%d", &a[i].first);
  for (int i = 0; i < (n); i++)
    if (lucky(a[i].first)) ok = 1;
  if (!ok) {
    for (int i = 0; i < (n - 1); i++)
      if (a[i].first > a[i + 1].first) {
        printf("-1\n");
        return 0;
      }
    printf("0\n");
    return 0;
  }
  int pos;
  for (int i = 0; i < (n); i++)
    if (lucky(a[i].first)) pos = i;
  for (int i = 0; i < (n); i++) a[i].second = i;
  sort(a, a + n);
  for (int i = 0; i < (n); i++) t[a[i].second] = i;
  for (int i = 0; i < (n); i++) where[t[i]] = i;
  int val = t[pos];
  for (int i = 0; i < (n); i++)
    if (i != t[i] && val != i) {
      if (i != pos) sw(i, pos);
      pos = where[i];
      sw(pos, i);
    }
  printf("%d\n", q);
  for (int i = 0; i < (q); i++)
    printf("%d %d\n", res[i].first + 1, res[i].second + 1);
  return 0;
}
