unittest
{
	assert( [ "issii", "2" ].parse.expand.solve == 4 );
	assert( [ "qq", "81" ].parse.expand.solve == 81 );
	assert( [ "cooooooooonteeeeeeeeeest", "999993333" ].parse.expand.solve == 8999939997 );
	
	assert( [ "issiii", "2" ].parse.expand.solve == 5 );		// 追加ケース
	assert( [ "iissi", "2" ].parse.expand.solve == 4 );		// 追加ケース
}



import std.algorithm;
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.to!( dchar[] );
	input.popFront;
	auto k = input.front.to!( long );
	return tuple( s, k );
}

auto solve( dchar[] s, long k )
{
	auto ans = 0L;
	auto gs = s.group.array;
	if( gs.length == 1 )
	{
		ans = gs.front[ 1 ] * k / 2;
	}
	else if( gs.front[ 0 ] != gs.back[ 0 ] )
	{
		ans = reduce!( ( a, b ) => a + b[ 1 ] / 2 )( 0L, gs ) * k;
	}
	else
	{
		ans += gs.front[ 1 ] / 2;														// 頭
		ans += reduce!( ( a, b ) => a + b[ 1 ] / 2 )( 0L, gs[ 1 .. $ - 1 ] ) * k;		// 身
		ans += ( gs.front[ 1 ] + gs.back[ 1 ] ) / 2 * ( k - 1 );						// 連結部分（頭＋尻尾）
		ans += gs.back[ 1 ] / 2;														// 尻尾
	}
	return ans;
}
