#include <bits/stdc++.h>
using namespace std;
bool ism25(string s);
int getMsb(int a);
string b;
map<string, bool> seen;
queue<pair<int, pair<string, int> > > q;
pair<int, pair<string, int> > sai;
int bfs(string s, int init) {
  if ((int)s.size() == 1) return -1;
  q.push({0, {s, init}});
  seen[s] = 1;
  int att, aux, tam, resp = 999999999;
  char x;
  while (!q.empty()) {
    sai = q.front();
    q.pop();
    if (ism25(sai.second.first) && (sai.first) < resp) resp = sai.first;
    if (sai.first > resp) continue;
    b = sai.second.first;
    att = sai.second.second;
    tam = (int)b.size() - 1;
    for (int i = att, j, k, l; i; i -= (1 << j)) {
      j = getMsb(i);
      if (j == tam) continue;
      aux = att;
      k = (aux & (1 << j)) << 1;
      l = (aux & (1 << (j + 1))) >> 1;
      aux &= (~((1 << j) | (1 << (j + 1))));
      aux |= k | l;
      x = b[j];
      b[j] = b[j + 1], b[j + 1] = x;
      if (b[0] != '0' && !seen[b]) {
        seen[b] = 1;
        q.push({sai.first + 1, {b, aux}});
      }
      b[j + 1] = b[j], b[j] = x;
    }
  }
  return resp == 999999999 ? -1 : resp;
}
int vis[10];
int main() {
  ios::sync_with_stdio(0);
  string s;
  cin >> s;
  int resp, cnt = 0, init;
  char target[] = {'2', '5', '7'}, x;
  init = 0;
  for (int i = (int)s.size() - 1; i >= 0; --i) {
    x = s[i];
    for (int j = 0; j < 3; ++j) {
      if (x == '0' || x == target[j] && !vis[j]) {
        init |= (1 << i);
        vis[j] = 1;
        break;
      }
    }
  }
  resp = bfs(s, init);
  cout << resp << '\n';
}
bool ism25(string s) {
  if (s[0] == '0') return 0;
  int tam = (int)s.size();
  b = "";
  b += s[tam - 2];
  b += s[tam - 1];
  return (b == "25" || b == "75" || b == "50" || (b == "00" && tam > 2));
}
int getMsb(int a) {
  int r = 0;
  while (a >>= 1) ++r;
  return r;
}
