import std.stdio;
import std.conv;
import std.algorithm;
import std.range;
import std.string;
import std.typecons;
import std.math;
import std.random;
import std.range;
import std.functional;
class H
{
    int c;
    H l;
    H r;
    H p;
    dchar v;
    int d;
}
void dd(H h, int d)
{
    h.d = d;
    if (h.l)
    {
        dd(h.l, d + 1);
    }
    if (h.r)
    {
        dd(h.r, d + 1);
    }
}
void main()
{
    auto S = readln.strip;
    auto h = new H[256];
    H[] np;
    foreach (i; 0..256)
    {
        h[i] = new H;
        h[i].v = i;
    }
    foreach (i; S)
    {
        h[i].c++;
    }
    np = h.dup.sort!((x, y) => x.c < y.c).filter!(x => x.c).array;
    while (np.length != 1)
    {
        auto z = new H;
        z.r = np[0];
        z.l = np[1];
        z.r.p = z;
        z.l.p = z;
        z.c = z.l.c + z.r.c;
        np ~= z;
        np.sort!((x, y) => x.c < y.c);
        np = np.filter!(x => !x.p).array;
    }
    dd(np[0], !np[0].l && !np[0].r);
    int l = 0;
    foreach (i; S)
    {
        l += h[i].d;
    }
    writeln(l);
}
