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 C++14 (GCC 5.4.1) (judge verdict: Accepted)

#pragma GCC optimize ("O3")
#include <bits/stdc++.h>
#define DEBUG true
#ifdef ONLINE_JUDGE
#undef DEBUG
#define DEBUG false
#endif 

using namespace std;

#define MAXN ((ll)2e5+5)
#define MOD ((ll)1e9 + 7)
#define INF ((ll)1e9 + 9)
#define ll long long
#define _ << " " <<
#define CLEAR(a, b) memset(a, b, sizeof(a))
#define TRACE(x) if(DEBUG) cerr << #x << " = " << x << endl;
#define TRACE2(x,y) if(DEBUG) cerr << #x << " = " << x << " | " << #y << " = " << y << endl;
#define pb push_back
#define all(x) x.begin(), x.end()
#define endl "\n"
#define pii pair<ll,ll>
#define mid ((l+r)/2)

string s;
ll k,n;
ll ans;

map <int,int> mp;

ll f(string a)
{
	ll ct = 0 ;
	ll n_ = a.size();
	for (ll i = 1; i < n_; ++i)
	{
		if(a[i] == a[i-1])
		{
			a[i] = '#';
			ct++;
		}
	}
	return ct;
}

int main()
{
	ios_base::sync_with_stdio(false);cin.tie(0);
	cin >> s >> k;
	n = s.size();

	for (int i = 0; i < n; ++i)
		mp[s[i]]++;

	if(mp.size() == 1)
		ans = (k * n) / 2; 
	else
	{
		ll l = 0, r = 0;
		while(s[l] == s[l+1]) l++;
		while(s[n-1-r] == s[n-2-r]) r++;

		l++;
		r++;

		TRACE2(l,r);

		ans = l / 2 + r / 2;

		if(s[0] == s[n-1])
			ans += (k-1) * ((l+r)/2);
		else
			ans += (k-1) * (l/2 + r/2);

		string tmp;
		for (int i = l; i < n-r; ++i)
			tmp += s[i];

		TRACE2(tmp,f(tmp));
		
		ans += f(tmp) * k;
	}

	cout << fixed << ans << endl;
}