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 Java8 (OpenJDK 1.8.0) (judge verdict: Wrong Answer)

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String S = sc.next();
		long K = sc.nextLong();
		long count = 0;
		long check = 1;
		int l = S.length();
		int first = 1;
		int last = 1;
		int oddCheck = 1;
		if(l > 2 && S.substring(0,1).equals(S.substring(l-1,l))) {
			for(int i = 0; i < l-1; i++) {
				if(S.substring(i,i+1).equals(S.substring(i+1,i+2))) {
					first++;
				}else {
					break;
				}
			}
			for(int i = l; i > 1; i--) {
				if(S.substring(i-1,i).equals(S.substring(i-2,i-1))) {
					last++;
				}else {
					break;
				}
			}
			for(int i = first; i <= l-last-1; i++) {
				if(S.substring(i, i+1).equals(S.substring(i+1, i+2))) {
					check++;
				}else {
					count += (int)(check / 2) * K;
					check = 1;
				}
			}
			count += (first + last)/2 * K;
			for(int i = 0; i < l-1; i++) {
				if(S.substring(i,i+1).equals(S.substring(i+1,i+2))) {
					oddCheck++;
				}else
				break;
			}
			if(oddCheck == l) {
				count = l*K / 2;
			}
		}else if(l > 2 && !(S.substring(0,1).equals(S.substring(l-1,l)))) {
			for(int i = 0; i < l-1; i++) {
				if(S.substring(i,i+1).equals(S.substring(i+1,i+2))) {
					first++;
				}else {
					break;
				}
			}
			for(int i = l; i > 1; i--) {
				if(S.substring(i-1,i).equals(S.substring(i-2,i-1))) {
					last++;
				}else {
					break;
				}
			}
			for(int i = first; i <= l-last-1; i++) {
				if(S.substring(i, i+1).equals(S.substring(i+1, i+2))) {
					check++;
				}else {
					count += (int)(check / 2) * K;
					check = 1;
				}
			}
			count += (first + last)/2 * K;
		}else if(l == 2 && S.substring(0,1).equals(S.substring(1,2))) {
			count += K;
		}else if(l == 2 && !(S.substring(0,1).equals(S.substring(1,2)))) {
			count = 0;
		}else{	//|S|=1
			count += K /2 ;
		}
		System.out.println(count);
		sc.close();
	}

}