#include <bits/stdc++.h>
using namespace std;
int happyPos = -1;
bool isHappy(int x) {
  bool res = true;
  while (x > 0) {
    if (x % 10 != 4 && x % 10 != 7) {
      res = false;
    }
    x /= 10;
  }
  return res;
}
struct Number {
  int id;
  int val;
  int realPos;
  int needPos;
  bool isHappy;
};
bool cmp(Number x1, Number x2) { return x1.val < x2.val; }
vector<Number> a, b, a_by_id;
set<int> need;
vector<pair<int, int>> answer;
void mySwap(int pos1, int pos2) {
  if (pos1 == pos2) {
    return;
  }
  answer.push_back({pos1 + 1, pos2 + 1});
  swap(a[pos1], a[pos2]);
  a[pos1].realPos = pos1;
  a[pos2].realPos = pos2;
  b[a[pos1].needPos].realPos = pos1;
  b[a[pos2].needPos].realPos = pos2;
  if (a[pos1].realPos == a[pos1].needPos) {
    if (need.find(a[pos1].realPos) != need.end()) {
      need.erase(a[pos1].realPos);
    }
  }
  if (a[pos1].realPos != a[pos1].needPos) {
    need.insert(a[pos1].realPos);
  }
  if (a[pos2].realPos == a[pos2].needPos) {
    if (need.find(a[pos2].realPos) != need.end()) {
      need.erase(a[pos2].realPos);
    }
  }
  if (a[pos2].realPos != a[pos2].needPos) {
    need.insert(a[pos2].realPos);
  }
  a_by_id[a[pos1].id].realPos = pos1;
  a_by_id[a[pos2].id].realPos = pos2;
  if (happyPos == pos1) {
    happyPos = pos2;
  } else if (happyPos == pos2) {
    happyPos = pos1;
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  int n;
  cin >> n;
  for (int i = 0; i < n; i++) {
    int x;
    cin >> x;
    Number x2;
    x2.isHappy = false;
    x2.id = i;
    x2.val = x;
    x2.realPos = i;
    if (happyPos == -1 && isHappy(x)) {
      happyPos = i;
      x2.isHappy = true;
    }
    a.push_back(x2);
  }
  b = a;
  stable_sort(b.begin(), b.end(), cmp);
  for (int i = 0; i < b.size(); i++) {
    auto x = b[i];
    x.needPos = i;
    a[x.id].needPos = i;
  }
  for (int i = 0; i < a.size(); i++) {
    if (a[i].realPos != a[i].needPos) {
      need.insert(i);
    }
  }
  a_by_id = a;
  if (need.empty()) {
    cout << "0\n";
    return 0;
  }
  if (happyPos == -1) {
    cout << -1 << "\n";
    return 0;
  }
  while (true) {
    if (need.empty()) {
      break;
    }
    auto it = need.begin();
    if (b[*it].realPos == happyPos) {
      it++;
    }
    if (*it == happyPos) {
      mySwap(happyPos, b[happyPos].realPos);
    } else {
      mySwap(happyPos, *it);
    }
  }
  cout << answer.size() << "\n";
  for (auto item : answer) {
    cout << item.first << " " << item.second << "\n";
  }
  return 0;
}
