Problem:
Score : 300 points

Problem Statement

Given is a string S. Let T be the concatenation of K copies of S.
We can repeatedly perform the following operation: choose a character in T and replace it with a different character.
Find the minimum number of operations required to satisfy the following condition: any two adjacent characters in T are different.

Constraints

1 \leq |S| \leq 100

S consists of lowercase English letters.

1 \leq K \leq 10^9

K is an integer.

Input

Input is given from Standard Input in the following format:

S
K

Output

Print the minimum number of operations required.

Sample Input 1

issii
2

Sample Output 1

4

T is issiiissii. For example, we can rewrite it into ispiqisyhi, and now any two adjacent characters are different.

Sample Input 2

qq
81

Sample Output 2

81

Sample Input 3

cooooooooonteeeeeeeeeest
999993333

Sample Output 3

8999939997

Solution in Rust (1.15.1) (judge verdict: Wrong Answer)

use std::io;

fn main() {
	let s = read::<String>();
	let k = read::<i64>();

	// 入力された文字列を2回繰り返した文字列の作成
	let ss: String = format!("{}{}", s, s);
	let mut count: i64 = 0;

	// kが奇数回あるなら最後の奇数回目分を加算
	if (k % 2 == 1) {
		count = ret_char_num(&s);
	}

	// 偶数回分を加算
	count = count + ret_char_num(&ss) * (k / 2);

	println!("{}", count);
}

fn read<T: std::str::FromStr>() -> T {
	let mut line = String::new();
	io::stdin().read_line(&mut line).ok();
	line.trim().parse().ok().unwrap()
}

fn ret_char_num(s : &String) -> i64 {
	// 渡された文字列の連続する文字の数を返す

	let mut vec: Vec<char> = s.as_str().chars().collect();
	let mut count: i64 = 0;

	for i in 1..vec.len(){
		// 1つ前と一致した場合，存在しない文字に書き換える
		if vec[i - 1] == vec[i]{
			count = count + 1;
			vec[i] = '!';
		}
	}
	// println!("{}: {}", s, count);
	count
}