#include <iostream>
#include <limits>
#include <set>
#include <vector>
#include <algorithm>
#include <cmath>
#include <memory>
using namespace std;
const int max_hour = std::numeric_limits<int>::max() / 2;
int solve(const string& s,
char height = 0,
double a = 0,
double b = 0,
double a_base = 1000.0,
double b_base = 1.0,
shared_ptr< set<double> > searched = make_shared< set<double> >());
int solve_sub(const string& s, char height,
double a, double b,
double a_base, double b_base,
shared_ptr< set<double> > searched) {
if (height == ':')
return 0;
int hour = max_hour;
int l = s.length() - 1;
if (a + b > l)
return max_hour;
int fwd_a = floor(a + 1.0);
int back_a = ceil(a - 1.0);
vector<int> a_pos = { fwd_a, back_a };
// move A to left and right peak or bottom
for (int a : a_pos) {
if (a < 0 || a > l)
continue;
char h = s[a];
int took_hour = abs(height - h);
int fwd_b = floor(b + 1.0);
if (fwd_b < l) {
// can B move to left peak/bottom?
if (s[l - fwd_b] == h) {
// move B to left peak/bottom
if (h == ':')
return took_hour;
hour = min(hour, took_hour + solve(s, h, a, fwd_b, a_base, b_base, searched));
}
// can B move to left slope?
char high = max(s[l - fwd_b], s[l - (fwd_b - 1)]);
char low = min(s[l - fwd_b], s[l - (fwd_b - 1)]);
if (low < h && h < high) {
// move A to right, B to left slope
hour = min(hour, took_hour + solve(s, h, a, fwd_b - 0.5, a_base, b_base, searched));
}
}
// can B move to right peak/bottom?
int back_b = ceil(b - 1.0);
if (back_b >= 0) {
// can B move to right peak/bottom?
if (s[l - back_b] == h) {
// move B to left peak/bottom
if (h == ':')
return took_hour;
hour = min(hour, took_hour + solve(s, h, a, back_b, a_base, b_base, searched));
}
// can B move to right slope?
char high = max(s[l - back_b], s[l - (back_b + 1)]);
char low = min(s[l - back_b], s[l - (back_b + 1)]);
if (low < h && h < high) {
// move A to right, B to left slope
hour = min(hour, took_hour + solve(s, h, a, back_b + 0.5, a_base, b_base, searched));
}
}
}
return hour;
}
int solve(const string& s, char height,
double a, double b,
double a_base, double b_base,
shared_ptr< set<double> > searched) {
double key = a*a_base + b*b_base;
if (!searched->insert(key).second)
return max_hour;
if (!height)
height = s[0];
string rev(s.rbegin(), s.rend());
int hour = solve_sub(s, height, a, b, a_base, b_base, searched);
int hour_rev = solve_sub(rev, height, b, a, b_base, a_base, searched);
return min(hour, hour_rev);
}
int main() {
string s;
while (cin >> s) {
cout << "\"" << s << "\" => " << solve(s) << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bGltaXRzPgojaW5jbHVkZSA8c2V0PgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8Y21hdGg+CiNpbmNsdWRlIDxtZW1vcnk+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY29uc3QgaW50IG1heF9ob3VyID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKSAvIDI7CgppbnQgc29sdmUoY29uc3Qgc3RyaW5nJiBzLAogICAgY2hhciBoZWlnaHQgPSAwLAogICAgZG91YmxlIGEgPSAwLAogICAgZG91YmxlIGIgPSAwLAogICAgZG91YmxlIGFfYmFzZSA9IDEwMDAuMCwKICAgIGRvdWJsZSBiX2Jhc2UgPSAxLjAsCiAgICBzaGFyZWRfcHRyPCBzZXQ8ZG91YmxlPiA+IHNlYXJjaGVkID0gbWFrZV9zaGFyZWQ8IHNldDxkb3VibGU+ID4oKSk7CgppbnQgc29sdmVfc3ViKGNvbnN0IHN0cmluZyYgcywgY2hhciBoZWlnaHQsCiAgICBkb3VibGUgYSwgZG91YmxlIGIsCiAgICBkb3VibGUgYV9iYXNlLCBkb3VibGUgYl9iYXNlLAogICAgc2hhcmVkX3B0cjwgc2V0PGRvdWJsZT4gPiBzZWFyY2hlZCkgewoKICAgIGlmIChoZWlnaHQgPT0gJzonKQogICAgICAgIHJldHVybiAwOwoKICAgIGludCBob3VyID0gbWF4X2hvdXI7CiAgICBpbnQgbCA9IHMubGVuZ3RoKCkgLSAxOwoKICAgIGlmIChhICsgYiA+IGwpCiAgICAgICAgcmV0dXJuIG1heF9ob3VyOwoKICAgIGludCBmd2RfYSA9IGZsb29yKGEgKyAxLjApOwogICAgaW50IGJhY2tfYSA9IGNlaWwoYSAtIDEuMCk7CgoKICAgIHZlY3RvcjxpbnQ+IGFfcG9zID0geyBmd2RfYSwgYmFja19hIH07CgogICAgLy8gbW92ZSBBIHRvIGxlZnQgYW5kIHJpZ2h0IHBlYWsgb3IgYm90dG9tCiAgICBmb3IgKGludCBhIDogYV9wb3MpIHsKICAgICAgICBpZiAoYSA8IDAgfHwgYSA+IGwpCiAgICAgICAgICAgIGNvbnRpbnVlOwoKICAgICAgICBjaGFyIGggPSBzW2FdOwogICAgICAgIGludCB0b29rX2hvdXIgPSBhYnMoaGVpZ2h0IC0gaCk7CgogICAgICAgIGludCBmd2RfYiA9IGZsb29yKGIgKyAxLjApOwogICAgICAgIGlmIChmd2RfYiA8IGwpIHsKICAgICAgICAgICAgLy8gY2FuIEIgbW92ZSB0byBsZWZ0IHBlYWsvYm90dG9tPwogICAgICAgICAgICBpZiAoc1tsIC0gZndkX2JdID09IGgpIHsKICAgICAgICAgICAgICAgIC8vIG1vdmUgQiB0byBsZWZ0IHBlYWsvYm90dG9tCiAgICAgICAgICAgICAgICBpZiAoaCA9PSAnOicpCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRvb2tfaG91cjsKICAgICAgICAgICAgICAgIGhvdXIgPSBtaW4oaG91ciwgdG9va19ob3VyICsgc29sdmUocywgaCwgYSwgZndkX2IsIGFfYmFzZSwgYl9iYXNlLCBzZWFyY2hlZCkpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIGNhbiBCIG1vdmUgdG8gbGVmdCBzbG9wZT8KICAgICAgICAgICAgY2hhciBoaWdoID0gbWF4KHNbbCAtIGZ3ZF9iXSwgc1tsIC0gKGZ3ZF9iIC0gMSldKTsKICAgICAgICAgICAgY2hhciBsb3cgPSBtaW4oc1tsIC0gZndkX2JdLCBzW2wgLSAoZndkX2IgLSAxKV0pOwogICAgICAgICAgICBpZiAobG93IDwgaCAmJiBoIDwgaGlnaCkgewogICAgICAgICAgICAgICAgLy8gbW92ZSBBIHRvIHJpZ2h0LCBCIHRvIGxlZnQgc2xvcGUKICAgICAgICAgICAgICAgIGhvdXIgPSBtaW4oaG91ciwgdG9va19ob3VyICsgc29sdmUocywgaCwgYSwgZndkX2IgLSAwLjUsIGFfYmFzZSwgYl9iYXNlLCBzZWFyY2hlZCkpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBjYW4gQiBtb3ZlIHRvIHJpZ2h0IHBlYWsvYm90dG9tPwogICAgICAgIGludCBiYWNrX2IgPSBjZWlsKGIgLSAxLjApOwogICAgICAgIGlmIChiYWNrX2IgPj0gMCkgewogICAgICAgICAgICAvLyBjYW4gQiBtb3ZlIHRvIHJpZ2h0IHBlYWsvYm90dG9tPwogICAgICAgICAgICBpZiAoc1tsIC0gYmFja19iXSA9PSBoKSB7CiAgICAgICAgICAgICAgICAvLyBtb3ZlIEIgdG8gbGVmdCBwZWFrL2JvdHRvbQogICAgICAgICAgICAgICAgaWYgKGggPT0gJzonKQogICAgICAgICAgICAgICAgICAgIHJldHVybiB0b29rX2hvdXI7CiAgICAgICAgICAgICAgICBob3VyID0gbWluKGhvdXIsIHRvb2tfaG91ciArIHNvbHZlKHMsIGgsIGEsIGJhY2tfYiwgYV9iYXNlLCBiX2Jhc2UsIHNlYXJjaGVkKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gY2FuIEIgbW92ZSB0byByaWdodCBzbG9wZT8KICAgICAgICAgICAgY2hhciBoaWdoID0gbWF4KHNbbCAtIGJhY2tfYl0sIHNbbCAtIChiYWNrX2IgKyAxKV0pOwogICAgICAgICAgICBjaGFyIGxvdyA9IG1pbihzW2wgLSBiYWNrX2JdLCBzW2wgLSAoYmFja19iICsgMSldKTsKICAgICAgICAgICAgaWYgKGxvdyA8IGggJiYgaCA8IGhpZ2gpIHsKICAgICAgICAgICAgICAgIC8vIG1vdmUgQSB0byByaWdodCwgQiB0byBsZWZ0IHNsb3BlCiAgICAgICAgICAgICAgICBob3VyID0gbWluKGhvdXIsIHRvb2tfaG91ciArIHNvbHZlKHMsIGgsIGEsIGJhY2tfYiArIDAuNSwgYV9iYXNlLCBiX2Jhc2UsIHNlYXJjaGVkKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIGhvdXI7Cn0KCmludCBzb2x2ZShjb25zdCBzdHJpbmcmIHMsIGNoYXIgaGVpZ2h0LAogICAgZG91YmxlIGEsIGRvdWJsZSBiLAogICAgZG91YmxlIGFfYmFzZSwgZG91YmxlIGJfYmFzZSwKICAgIHNoYXJlZF9wdHI8IHNldDxkb3VibGU+ID4gc2VhcmNoZWQpIHsKCiAgICBkb3VibGUga2V5ID0gYSphX2Jhc2UgKyBiKmJfYmFzZTsKICAgIGlmICghc2VhcmNoZWQtPmluc2VydChrZXkpLnNlY29uZCkKICAgICAgICByZXR1cm4gbWF4X2hvdXI7CgogICAgaWYgKCFoZWlnaHQpCiAgICAgICAgaGVpZ2h0ID0gc1swXTsKCiAgICBzdHJpbmcgcmV2KHMucmJlZ2luKCksIHMucmVuZCgpKTsKICAgIGludCBob3VyID0gc29sdmVfc3ViKHMsIGhlaWdodCwgYSwgYiwgYV9iYXNlLCBiX2Jhc2UsIHNlYXJjaGVkKTsKICAgIGludCBob3VyX3JldiA9IHNvbHZlX3N1YihyZXYsIGhlaWdodCwgYiwgYSwgYl9iYXNlLCBhX2Jhc2UsIHNlYXJjaGVkKTsKICAgIHJldHVybiBtaW4oaG91ciwgaG91cl9yZXYpOwp9CgppbnQgbWFpbigpIHsKCXN0cmluZyBzOwoJd2hpbGUgKGNpbiA+PiBzKSB7CgkJY291dCA8PCAiXCIiIDw8IHMgPDwgIlwiID0+ICIgPDwgc29sdmUocykgPDwgZW5kbDsKCX0KCXJldHVybiAwOwp9