#include <bits/stdc++.h>
using namespace std;
struct E {
  int v;
  int i;
} a[100010];
bool cmp(E A, E B) { return A.v < B.v; }
bool lucky(int n) {
  if (n == 0) return 1;
  if (n % 10 == 4 || n % 10 == 7) return lucky(n / 10);
  return 0;
}
int b[100010];
int c[100010];
vector<pair<int, int> > kq;
void swap(int &a, int &b) {
  int t = a;
  a = b;
  b = t;
}
int main() {
  int n, i, k, j;
  scanf("%d", &n);
  k = -1;
  for (i = 0; i < n; i++) {
    scanf("%d", &a[i].v);
    a[i].i = i;
    if (lucky(a[i].v)) k = i;
  }
  if (k == -1) {
    for (i = 0; i < n - 1; i++)
      if (a[i].v > a[i + 1].v) {
        printf("-1");
        return 0;
      }
    printf("0");
    return 0;
  }
  sort(a, a + n, cmp);
  for (i = 0; i < n; i++) {
    b[a[i].i] = i;
    c[i] = a[i].i;
  }
  for (i = 0; i < n; i++) {
    c[b[k]] = i;
    c[b[i]] = k;
    swap(b[k], b[i]);
    if (k != i) kq.push_back(make_pair(k + 1, i + 1));
    k = i;
    j = c[i];
    c[b[k]] = j;
    c[b[j]] = k;
    swap(b[k], b[j]);
    if (k != j) kq.push_back(make_pair(k + 1, j + 1));
    k = j;
  }
  cout << kq.size() << endl;
  for (i = 0; i < kq.size(); i++)
    cout << kq[i].first << " " << kq[i].second << endl;
  return 0;
}
