#include <bits/stdc++.h>
using namespace std;
int arr[100000];
int n;
priority_queue<pair<int, int>, vector<pair<int, int> >,
               greater<pair<int, int> > >
    q;
int rankHash[100000];
int indHash[100000];
vector<pair<int, int> > ans;
int main(void) {
  scanf("%d", &n);
  for (int i = 0; i < n; i++) scanf("%d", arr + i);
  bool isSorted = true;
  int lucky = -1;
  for (int i = 0; i < n - 1; i++) {
    if (arr[i + 1] < arr[i]) {
      isSorted = false;
      break;
    }
  }
  if (isSorted) {
    printf("0\n");
    return 0;
  }
  for (int i = 0; i < n; i++) {
    int tar = arr[i];
    bool isLucky = true;
    while (tar) {
      if (tar % 10 != 4 && tar % 10 != 7) {
        isLucky = false;
        break;
      }
      tar /= 10;
    }
    if (isLucky) {
      lucky = i;
      break;
    }
  }
  if (lucky == -1) {
    printf("-1\n");
    return 0;
  }
  for (int i = 0; i < n; i++) q.push(make_pair(arr[i], i));
  for (int i = 0; i < n; i++) {
    rankHash[i] = q.top().second;
    q.pop();
  }
  for (int i = 0; i < n; i++) indHash[rankHash[i]] = i;
  for (int i = 0; i < n; i++) {
    if (i != lucky) {
      ans.push_back(make_pair(i + 1, lucky + 1));
      rankHash[indHash[i]] = lucky;
      rankHash[indHash[lucky]] = i;
      swap(indHash[i], indHash[lucky]);
      lucky = i;
    }
    if (lucky != rankHash[i]) {
      ans.push_back(make_pair(lucky + 1, rankHash[i] + 1));
      int r1 = i;
      int r2 = indHash[lucky];
      int i1 = rankHash[r1];
      int i2 = rankHash[r2];
      rankHash[r2] = i1;
      rankHash[r1] = lucky;
      swap(indHash[i1], indHash[i2]);
      lucky = i1;
    }
  }
  printf("%d\n", (int)ans.size());
  for (int i = 0; i < ans.size(); i++)
    printf("%d %d\n", ans[i].first, ans[i].second);
  return 0;
}
