#include <bits/stdc++.h>
int n, na, ln, lnp = -1;
int ary[100010], vis[100010], map[100010];
std::pair<int, int> a1[100010];
std::pair<int, int> ans[2 * 100010];
int is_ln(int a) {
  while (a != 0) {
    int t = a % 10;
    if (t != 4 && t != 7) return 0;
    a /= 10;
  }
  return 1;
}
int chk() {
  int las = -1;
  for (int i = 0; i < n; ++i) {
    if (a1[i].second < las) return 0;
    las = a1[i].second;
  }
  return 1;
}
int main(void) {
  scanf("%d", &n);
  for (int i = 0; i < n; ++i) scanf("%d", &ary[i]);
  for (int i = 0; i < n; ++i) a1[i].first = ary[i], a1[i].second = i;
  std::sort(a1, a1 + n);
  for (int i = 0; i < n; ++i) {
    if (is_ln(a1[i].first) == 1) {
      ln = a1[i].first, lnp = a1[i].second;
      if (lnp != i) {
        ans[na].first = lnp, ans[na].second = i;
        for (int j = 0; j < n; ++j) {
          if (a1[j].second == i) {
            std::swap(a1[i].second, a1[j].second);
            break;
          }
        }
        lnp = i;
        na++;
      }
      break;
    }
  }
  if (chk() == 1) {
    if (lnp == -1)
      puts("0");
    else {
      if (na == 0)
        puts("0");
      else
        printf("1\n%d %d\n", ans[0].first + 1, ans[0].second + 1);
    }
    return 0;
  } else if (chk() == 0 && lnp == -1) {
    puts("-1");
    return 0;
  }
  for (int i = 0; i < n; ++i) {
    map[i] = a1[i].second;
  }
  vis[lnp] = 1;
  int t = lnp, t2 = -1;
  for (int i = 0; i < n; ++i) {
    if (vis[i] == 1) continue;
    t = lnp;
    ans[na].first = i, ans[na].second = lnp;
    na++;
    lnp = i;
    vis[i] = 1;
    while (vis[map[lnp]] == 0) {
      ans[na].first = lnp, ans[na].second = map[lnp];
      na++;
      lnp = map[lnp];
      vis[lnp] = 1;
    }
    ans[na].first = lnp, ans[na].second = t;
    na++;
    lnp = t;
  }
  printf("%d\n", na);
  for (int i = 0; i < na; ++i)
    printf("%d %d\n", ans[i].first + 1, ans[i].second + 1);
  return 0;
}
