#include <bits/stdc++.h>
using namespace std;
enum { N = 100000 };
int n;
int a[N], wh[N];
bool h[N];
multimap<int, int> nums;
vector<pair<int, int> > ans;
set<int> bad;
bool ishappy(int x) {
  bool res = true;
  while (x) {
    int r = x % 10;
    res = res && (r == 4 || r == 7);
    x /= 10;
  }
  return res;
}
void add(int x, int y) {
  if (x == y) {
    return;
  }
  ans.push_back(make_pair(x + 1, y + 1));
  swap(a[x], a[y]);
  swap(wh[a[x]], wh[a[y]]);
}
int main(void) {
  cin >> n;
  for (int i = 0; i < n; ++i) {
    cin >> a[i];
    nums.insert(make_pair(a[i], i));
  }
  int i = 0;
  int hap = -1;
  bool sorted = true;
  for (auto p : nums) {
    a[p.second] = i;
    sorted = sorted && (p.second == i);
    wh[i] = p.second;
    h[i] = ishappy(p.first);
    if (h[i]) {
      hap = i;
    }
    ++i;
  }
  if (hap < 0) {
    cout << (sorted ? 0 : -1) << "\n";
    return 0;
  }
  for (int i = 0; i < n; ++i) {
    int x = a[i];
    if (x != i) {
      bad.insert(i);
    }
  }
  while (bad.size()) {
    auto it = bad.begin();
    int i = *it;
    if (a[i] == hap) {
      i = *(++it);
    }
    int x = a[i];
    if (hap != x && x != i) {
      int j = -1;
      if (a[x] == hap) {
        add(i, x);
      } else {
        j = wh[hap];
        add(wh[hap], x);
        add(wh[hap], i);
      }
      bad.erase(x);
      if (a[i] == i) {
        bad.erase(i);
      }
      if (j != -1 && a[j] != j) {
        bad.insert(j);
      } else if (j != -1) {
        bad.erase(j);
      }
    }
  }
  cout << ans.size() << "\n";
  for (auto p : ans) {
    cout << p.first << " " << p.second << "\n";
  }
  return 0;
}
