#include <bits/stdc++.h>
using namespace std;
const int MOD = 1e9 + 7;
const int INF = 1e9;
const long long LINF = 1e18;
const int WOW = 40000;
const int NIL = 0;
const int dy[8] = {0, 0, -1, 1, 1, 1, -1, -1};
const int dx[8] = {1, -1, 0, 0, 1, -1, 1, -1};
const double PI = 2 * acos(0);
const int MAXN = 1e5 + 5;
int N, arr[MAXN], pos[MAXN];
bool islucky(int n) {
  while (n) {
    if (n % 10 != 4 && n % 10 != 7) return 0;
    n /= 10;
  }
  return 1;
}
int l;
bool ok;
int t[MAXN];
void compress() {
  sort(t, t + N);
  map<int, int> m;
  for (int i = 0; i < N; ++i)
    if (i == 0 || t[i] != t[i - 1]) m[t[i]] = i;
  for (int i = 0; i < N; ++i) arr[i] = m[arr[i]]++;
}
vector<pair<int, int> > ans;
void swapp(int& i, int& j) {
  if (i == j) return;
  ans.push_back({i + 1, j + 1});
  int a = arr[i], b = arr[j];
  arr[i] = b, arr[j] = a;
  pos[b] = i, pos[a] = j;
  swap(i, j);
}
int main() {
  scanf("%d", &N);
  l = -1, ok = 1;
  for (int i = 0; i < N; ++i) {
    scanf("%d", &arr[i]);
    if (islucky(arr[i])) l = i;
    if (i != 0 && arr[i] < arr[i - 1]) ok = 0;
    t[i] = arr[i];
  }
  if (l == -1) {
    puts(ok ? "0" : "-1");
    return 0;
  }
  compress();
  for (int i = 0; i < N; ++i) pos[arr[i]] = i;
  for (int i = 0; i < N; ++i) {
    int a = i, b = pos[i];
    if (a == b) continue;
    swapp(a, l);
    swapp(b, l);
  }
  printf("%d\n", ans.size());
  for (pair<int, int> p : ans) printf("%d %d\n", p.first, p.second);
}
