#include <bits/stdc++.h>
using namespace std;
inline long long power(long long a, long long b) {
  long long x = 1;
  a = a % 1000000007ULL;
  while (b) {
    if (b & 1) x = (x * a) % 1000000007ULL;
    a = (a * a) % 1000000007ULL;
    b >>= 1;
  }
  return x;
}
inline long long inv(long long a) { return power(a, 1000000007ULL - 2); }
long long gcd(long long a, long long b) { return a ? gcd(b % a, a) : b; }
const int N = 1e5 + 5;
string s;
vector<int> v[12];
int n;
int main() {
  ios_base::sync_with_stdio(false);
  cin >> s;
  n = s.size();
  for (int i = 0; i < n; i++) {
    v[s[i] - '0'].push_back(i);
  }
  if (n < 2) {
    cout << "-1\n";
    return 0;
  }
  if (n == 2) {
    if (v[0].size() > 0 && v[5].size() > 0) {
      if (s[0] == '5')
        cout << "0\n";
      else
        cout << "1\n";
      return 0;
    }
    if (v[2].size() > 0 && v[5].size() > 0) {
      if (s[0] == '2')
        cout << "0\n";
      else
        cout << "1\n";
      return 0;
    }
    if (v[7].size() > 0 && v[5].size() > 0) {
      if (s[0] == '7')
        cout << "0\n";
      else
        cout << "1\n";
      return 0;
    }
    cout << "-1\n";
    return 0;
  }
  int ans = 10000;
  if (v[0].size() > 1) {
    int x = v[0].size();
    ans = min(ans, abs(n - 1 - v[0][x - 1]) + abs(n - 2 - v[0][x - 2]));
  }
  if (v[2].size() > 0 && v[5].size() > 0) {
    int x = v[2].size();
    int y = v[5].size();
    x = v[2][x - 1];
    y = v[5][y - 1];
    if (n != 3 || v[0].size() == 0) {
      int tmp = 0;
      string sss = s;
      for (int i = y; i < n - 1; i++) {
        sss[i] = sss[i + 1];
        tmp++;
      }
      sss[n - 1] = '5';
      for (int j = n - 2; j > -1; j--) {
        if (sss[j] == '2') {
          x = j;
          break;
        }
      }
      for (int i = x; i < n - 2; i++) {
        sss[i] = sss[i + 1];
        tmp++;
      }
      sss[n - 2] = '2';
      if (sss[0] == '0') {
        for (int j = 0; j < n; j++) {
          if (sss[j] == '0') tmp++;
        }
      }
      ans = min(tmp, ans);
    }
  }
  if (v[7].size() > 0 && v[5].size() > 0) {
    int x = v[7].size();
    int y = v[5].size();
    x = v[7][x - 1];
    y = v[5][y - 1];
    if (n != 3 || v[0].size() == 0) {
      int tmp = 0;
      string sss = s;
      for (int i = y; i < n - 1; i++) {
        sss[i] = sss[i + 1];
        tmp++;
      }
      sss[n - 1] = '5';
      for (int j = n - 2; j > -1; j--) {
        if (sss[j] == '7') {
          x = j;
          break;
        }
      }
      for (int i = x; i < n - 2; i++) {
        sss[i] = sss[i + 1];
        tmp++;
      }
      sss[n - 2] = '7';
      if (sss[0] == '0') {
        for (int j = 0; j < n; j++) {
          if (sss[j] == '0') tmp++;
        }
      }
      ans = min(tmp, ans);
    }
  }
  if (v[5].size() > 0 && v[0].size() > 0) {
    int x = v[5].size();
    int y = v[0].size();
    x = v[5][x - 1];
    y = v[0][y - 1];
    if (n != 3 || v[0].size() == 1) {
      int tmp = 0;
      string sss = s;
      for (int i = y; i < n - 1; i++) {
        sss[i] = sss[i + 1];
        tmp++;
      }
      sss[n - 1] = '0';
      for (int j = n - 2; j > -1; j--) {
        if (sss[j] == '5') {
          x = j;
          break;
        }
      }
      for (int i = x; i < n - 2; i++) {
        sss[i] = sss[i + 1];
        tmp++;
      }
      sss[n - 2] = '5';
      if (sss[0] == '0') {
        for (int j = 0; j < n; j++) {
          if (sss[j] == '0') tmp++;
        }
      }
      ans = min(tmp, ans);
    }
  }
  if (ans == 10000) {
    cout << "-1\n";
    return 0;
  }
  cout << ans << endl;
  return 0;
}
