Problem: A colored stripe is represented by a horizontal row of n square cells, each cell is pained one of k colors. Your task is to repaint the minimum number of cells so that no two neighbouring cells are of the same color. You can use any color from 1 to k to repaint the cells.

Input

The first input line contains two integers n and k (1 ≤ n ≤ 5·105; 2 ≤ k ≤ 26). The second line contains n uppercase English letters. Letter "A" stands for the first color, letter "B" stands for the second color and so on. The first k English letters may be used. Each letter represents the color of the corresponding cell of the stripe.

Output

Print a single integer — the required minimum number of repaintings. In the second line print any possible variant of the repainted stripe.

Examples

Input

6 3
ABBACC


Output

2
ABCACA


Input

3 2
BBB


Output

1
BAB

Solution (in CPP):

Solution:
#include <bits/stdc++.h>
using namespace std;
const int oo = 1e9;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  int n, k;
  cin >> n >> k;
  string s;
  cin >> s;
  if (k == 2) {
    int a = 0, b = 0;
    for (int i = (0); i < (n); ++i) {
      a += (s[i] != 'A' + i % 2);
      b += (s[i] != 'A' + (i + 1) % 2);
    }
    cout << min(a, b) << '\n';
    for (int i = (0); i < (n); ++i) cout << (char)('A' + (i + (b < a)) % 2);
    cout << '\n';
  } else {
    int l = 0, r = 0, ans = 0;
    while (r < n) {
      char c = s[l], nc = '$';
      while (s[r] == c) r++;
      if ((r - l) % 2) {
        nc = 'A' + (c == 'A');
      } else {
        vector<int> taken(k);
        if (r < n) taken[s[r] - 'A'] = 1;
        taken[s[r - 1] - 'A'] = 1;
        char cc = 0;
        while (taken[cc]) cc++;
        nc = cc + 'A';
      }
      for (int i = l + 1; i < r; i += 2) {
        s[i] = nc;
        ans++;
      }
      l = r;
    }
    cout << ans << '\n';
    cout << s << '\n';
  }
  return 0;
}