unittest
{
	assert( [ "0011" ].parse.expand.solve == 4 );
	assert( [ "11011010001011" ].parse.expand.solve == 12 );
	assert( [ "0" ].parse.expand.solve == 0 );
}



import std.conv;
import std.range;
import std.stdio;
import std.typecons;

void main()
{
	stdin.byLineCopy.parse.expand.solve.writeln;
}

auto parse( Range )( Range input )
if( isInputRange!Range && is( ElementType!Range == string ) )
{
	auto s = input.front;
	return tuple( s );
}

auto solve( string s )
{
	// Sを連続する同じ色のキューブの数の配列に変換
	auto p = '9';
	long[] ns;
	foreach( c; s )
	{
		if( p != c )
		{
			ns ~= 1L;
			p = c;
		}
		else
		{
			ns[ $ - 1 ]++;
		}
	}
	
	// 取り除けるキューブの数を計算
	auto ans = 0L;
	auto r1 = ns[ 0 ];
	auto r2 = 0L;
	foreach( n; ns[ 1 .. $ ] )
	{
		if( n < r1 )
		{
			ans += n * 2;
			r2 = r1 - n;
			r1 = 0L;
		}
		else
		{
			ans += r1 * 2;
			r1 = r2 + n - r1;
			r2 = 0L;
		}
	}
	
	return ans;
}
