#include <bits/stdc++.h>
using namespace std;
const int oo = 0x3f3f3f3f;
const double eps = 1e-9;
int N, perm[110000], invperm[110000], pos[110000];
pair<int, int> nums[110000], tmp[110000];
bool lucky[110000], mark[110000];
bool islucky(int n) {
  while (n) {
    int d = n % 10;
    n /= 10;
    if (d != 4 && d != 7) return false;
  }
  return true;
}
void mark_cycle(int n) {
  mark[n] = true;
  int p = perm[n];
  while (p != n) {
    mark[p] = true;
    p = perm[p];
  }
}
int main() {
  scanf("%d", &N);
  int st = -1;
  for (int i = (0); i < (N); i++) {
    scanf("%d", &nums[i].first);
    nums[i].second = i;
    lucky[i] = islucky(nums[i].first);
    if (lucky[i]) st = i;
  }
  if (st == -1) {
    bool sorted = true;
    for (int i = (0); i < (N - 1); i++)
      if (nums[i].first > nums[i + 1].first) sorted = false;
    if (sorted) {
      cout << 0 << endl;
    } else {
      cout << -1 << endl;
    }
  } else {
    for (int i = (0); i < (N); i++) tmp[i] = nums[i];
    vector<pair<int, int> > swaps;
    sort(nums, nums + N);
    for (int i = (0); i < (N); i++) {
      perm[nums[i].second] = i;
      invperm[i] = nums[i].second;
    }
    memset(mark, 0, sizeof(mark));
    mark_cycle(st);
    for (int i = (0); i < (N); i++) {
      if (mark[i]) continue;
      mark_cycle(i);
      swaps.push_back(pair<int, int>(st + 1, i + 1));
      swap(tmp[st], tmp[i]);
      st = i;
    }
    for (int i = (0); i < (N); i++) pos[tmp[i].second] = i;
    while (perm[tmp[st].second] != st) {
      int p = pos[invperm[st]];
      swaps.push_back(pair<int, int>(p + 1, st + 1));
      swap(tmp[p], tmp[st]);
      swap(pos[tmp[p].second], pos[tmp[st].second]);
      st = p;
    }
    printf("%d\n", int((swaps).size()));
    for (int i = (0); i < (int((swaps).size())); i++)
      printf("%d %d\n", swaps[i].first, swaps[i].second);
  }
  return 0;
}
