//package javaapplication1;
import java.util.*;
import java.io.*;
//public class IO extends PrintWriter {
// private InputStreamReader r;
// private static final int BUFSIZE = 1 << 15;
// private char[] buf;
// private int bufc;
// private int bufi;
// private StringBuilder sb;
//
// public IO() {
// super(new BufferedOutputStream(System.out));
// r = new InputStreamReader(System.in);
//
// buf = new char[BUFSIZE];
// bufc = 0;
// bufi = 0;
// sb = new StringBuilder();
// }
//
// private void fillBuf() throws IOException {
// bufi = 0;
// bufc = 0;
// while(bufc == 0) {
// bufc = r.read(buf, 0, BUFSIZE);
// if(bufc == -1) {
// bufc = 0;
// return;
// }
// }
// }
//
// private boolean pumpBuf() throws IOException {
// if(bufi == bufc) {
// fillBuf();
// }
// return bufc != 0;
// }
//
// private boolean isDelimiter(char c) {
// return c == ' ' || c == '\t' || c == '\n' || c == '\r' || c == '\f';
// }
//
// private void eatDelimiters() throws IOException {
// while(true) {
// if(bufi == bufc) {
// fillBuf();
// if(bufc == 0) throw new RuntimeException("IO: Out of input.");
// }
//
// if(!isDelimiter(buf[bufi])) break;
// ++bufi;
// }
// }
//
// public String next() {
// try {
// sb.setLength(0);
//
// eatDelimiters();
// int start = bufi;
//
// while(true) {
// if(bufi == bufc) {
// sb.append(buf, start, bufi - start);
// fillBuf();
// start = 0;
// if(bufc == 0) break;
// }
//
// if(isDelimiter(buf[bufi])) break;
// ++bufi;
// }
//
// sb.append(buf, start, bufi - start);
//
// return sb.toString();
// } catch(IOException e) {
// throw new RuntimeException("IO.next: Caught IOException.");
// }
// }
//
// public int nextInt() {
// try {
// int ret = 0;
//
// eatDelimiters();
//
// boolean positive = true;
// if(buf[bufi] == '-') {
// ++bufi;
// if(!pumpBuf()) throw new RuntimeException("IO.nextInt: Invalid int.");
// positive = false;
// }
//
// boolean first = true;
// while(true) {
// if(!pumpBuf()) break;
// if(isDelimiter(buf[bufi])) {
// if(first) throw new RuntimeException("IO.nextInt: Invalid int.");
// break;
// }
// first = false;
//
// if(buf[bufi] >= '0' && buf[bufi] <= '9') {
// if(ret < -214748364) throw new RuntimeException("IO.nextInt: Invalid int.");
// ret *= 10;
// ret -= (int)(buf[bufi] - '0');
// if(ret > 0) throw new RuntimeException("IO.nextInt: Invalid int.");
// } else {
// throw new RuntimeException("IO.nextInt: Invalid int.");
// }
//
// ++bufi;
// }
//
// if(positive) {
// if(ret == -2147483648) throw new RuntimeException("IO.nextInt: Invalid int.");
// ret = -ret;
// }
//
// return ret;
// } catch(IOException e) {
// throw new RuntimeException("IO.nextInt: Caught IOException.");
// }
// }
//
// public long nextLong() {
// try {
// long ret = 0;
//
// eatDelimiters();
//
// boolean positive = true;
// if(buf[bufi] == '-') {
// ++bufi;
// if(!pumpBuf()) throw new RuntimeException("IO.nextLong: Invalid long.");
// positive = false;
// }
//
// boolean first = true;
// while(true) {
// if(!pumpBuf()) break;
// if(isDelimiter(buf[bufi])) {
// if(first) throw new RuntimeException("IO.nextLong: Invalid long.");
// break;
// }
// first = false;
//
// if(buf[bufi] >= '0' && buf[bufi] <= '9') {
// if(ret < -922337203685477580L) throw new RuntimeException("IO.nextLong: Invalid long.");
// ret *= 10;
// ret -= (long)(buf[bufi] - '0');
// if(ret > 0) throw new RuntimeException("IO.nextLong: Invalid long.");
// } else {
// throw new RuntimeException("IO.nextLong: Invalid long.");
// }
//
// ++bufi;
// }
//
// if(positive) {
// if(ret == -9223372036854775808L) throw new RuntimeException("IO.nextLong: Invalid long.");
// ret = -ret;
// }
//
// return ret;
// } catch(IOException e) {
// throw new RuntimeException("IO.nextLong: Caught IOException.");
// }
// }
//
// public double nextDouble() {
// return Double.parseDouble(next());
// }
//}
//
import java.io.*;
/**
*
* @author adahyvar
*/
public class JavaApplication1 {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
IO io = new IO();
String n = io.next();
if (n.length()%3 == 0) {
io.println(etaisyysSeiskasta(n));
} else {
io.println(etaisyysKaikista(n));
}
io.close();
}
public static int etaisyysKaikista(String n) {
int huonot1 = 0;
int huonot2 = 0;
int huonot3 = 0;
int huonot4 = 0;
int huonot5 = 0;
int huonot6 = 0;
int huonot7 = 0;
for (int i = 1; i < n.length(); i+=2) {
if (n.charAt(i) != 0 && n.charAt(i) != 7) {
huonot7++;
} else if (n.charAt(i) != 1 && n.charAt(i) != 8 ) {
huonot1++;
} else if (n.charAt(i) != 2 && n.charAt(i) != 9) {
huonot2++;
} else if (n.charAt(i) != 3) {
huonot3++;
} else if (n.charAt(i) != 5) {
huonot5++;
} else if (n.charAt(i) != 4) {
huonot4++;
} else if (n.charAt(i) != 6) {
huonot6++;
}
}
for (int i = 0; i < n.length(); i+=2) {
if (n.charAt(i) != 0 && n.charAt(i) != 7) {
huonot7++;
} else if (n.charAt(i) != 1 && n.charAt(i) != 8 ) {
huonot6++;
} else if (n.charAt(i) != 2 && n.charAt(i) != 9) {
huonot2++;
} else if (n.charAt(i) != 3) {
huonot4++;
} else if (n.charAt(i) != 5) {
huonot2++;
} else if (n.charAt(i) != 4) {
huonot3++;
} else if (n.charAt(i) != 6) {
huonot1++;
}
}
int min1 = Math.min(huonot3 + huonot4, huonot2 + huonot5);
int min2 = Math.min(huonot1 + huonot6, huonot7);
int min3 = Math.min(min1, min2);
return min3;
}
public static int etaisyysSeiskasta(String n) {
int huonot = 0;
for (int i = 0; i < n.length(); i++) {
if (n.charAt(i) != 0 && n.charAt(i) != 7) {
huonot++;
}
}
return huonot;
}
}