#include <bits/stdc++.h>
using namespace std;
struct num {
  int val;
  int curPos;
  bool isLucky;
};
bool comp(num a, num b) {
  if (a.val == b.val) return a.curPos < b.curPos;
  return a.val < b.val;
}
bool luck(int n) {
  if (n == 0) return 1;
  if (((n % 10) != 4) && ((n % 10) != 7)) return 0;
  return luck(n / 10);
}
num A[100000];
num B[100000];
int loc[100000];
int main() {
  int N;
  cin >> N;
  for (int i = 0; i < N; i++) {
    cin >> A[i].val;
    A[i].curPos = i;
    A[i].isLucky = luck(A[i].val);
    B[i].val = A[i].val;
    B[i].curPos = A[i].curPos;
    B[i].isLucky = A[i].isLucky;
  }
  sort(B, B + N, comp);
  int i;
  for (i = 0; i < N; i++)
    if (B[i].curPos != i) break;
  if (i == N) {
    cout << 0 << endl;
    return 0;
  }
  int lucky;
  for (lucky = 0; lucky < N; lucky++)
    if (B[lucky].isLucky) break;
  if (lucky == N) {
    cout << -1 << endl;
    return 0;
  }
  for (int i = 0; i < N; i++) loc[B[i].curPos] = i;
  int b1, b2;
  vector<int> ans1;
  vector<int> ans2;
  for (int j = 0; j < 2; j++) {
    for (int i = 0; i < N; i++) {
      if (B[i].curPos == i) continue;
      if ((B[i].isLucky) || (A[i].isLucky)) {
        b1 = i;
        b2 = loc[i];
        ans1.push_back(B[b1].curPos + 1);
        ans2.push_back(B[b2].curPos + 1);
        swap(B[b1].curPos, B[b2].curPos);
        swap(A[B[b1].curPos].curPos, A[B[b2].curPos].curPos);
        swap(A[B[b1].curPos].val, A[B[b2].curPos].val);
        swap(A[B[b1].curPos].isLucky, A[B[b2].curPos].isLucky);
        swap(loc[B[b1].curPos], loc[B[b2].curPos]);
      } else {
        b1 = lucky;
        b2 = loc[i];
        ans1.push_back(B[b1].curPos + 1);
        ans2.push_back(B[b2].curPos + 1);
        swap(B[b1].curPos, B[b2].curPos);
        swap(A[B[b1].curPos].curPos, A[B[b2].curPos].curPos);
        swap(A[B[b1].curPos].val, A[B[b2].curPos].val);
        swap(A[B[b1].curPos].isLucky, A[B[b2].curPos].isLucky);
        swap(loc[B[b1].curPos], loc[B[b2].curPos]);
        b1 = i;
        b2 = loc[i];
        ans1.push_back(B[b1].curPos + 1);
        ans2.push_back(B[b2].curPos + 1);
        swap(B[b1].curPos, B[b2].curPos);
        swap(A[B[b1].curPos].curPos, A[B[b2].curPos].curPos);
        swap(A[B[b1].curPos].val, A[B[b2].curPos].val);
        swap(A[B[b1].curPos].isLucky, A[B[b2].curPos].isLucky);
        swap(loc[B[b1].curPos], loc[B[b2].curPos]);
      }
    }
  }
  cout << ans1.size() << endl;
  for (int i = 0; i < ans1.size(); i++)
    cout << ans1[i] << " " << ans2[i] << endl;
  return 0;
}
