#include <bits/stdc++.h>
using namespace std;
string s;
long long K;
pair<long long, long long> memo[505][505];
long long memo2[505][505];
long long path[505];
long long hitung(long long le, long long ri) {
  if (memo2[le][ri] != -1) {
    return memo2[le][ri];
  }
  if (le == ri) {
    return 0;
  }
  long long mid = (ri - le + 1) / 2;
  long long cnt = 0;
  for (int i = 0; i < mid; i++) {
    if (s[le + i] != s[ri - i]) {
      cnt++;
    }
  }
  memo2[le][ri] = cnt;
  return cnt;
}
long long dp(long long le, long long k) {
  if (le == s.size()) {
    return 0;
  }
  if (memo[le][k].first != -1) {
    return memo[le][k].first;
  }
  long long k1 = 1e15;
  if (k == 1) {
    k1 = hitung(le, s.size() - 1);
    return k1;
  }
  long long mini = 0;
  for (int i = le; i < s.size(); i++) {
    long long k2 = dp(i + 1, k - 1) + hitung(le, i);
    if (k1 > k2) {
      mini = i;
      k1 = k2;
    }
  }
  memo[le][k].second = mini;
  memo[le][k].first = k1;
  return k1;
}
int main() {
  ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  cin >> s;
  cin >> K;
  long long minim = 1e15;
  memset(memo, -1, sizeof(memo));
  memset(memo2, -1, sizeof(memo2));
  minim = dp(0, K);
  long long le = 0;
  long long kq = K;
  cout << minim << "\n";
  while (kq > 0) {
    long long kk = memo[le][kq].second;
    if (kk == -1) {
      kk = s.size() - 1;
    }
    string u;
    for (int i = le; i <= kk; i++) {
      u.push_back(s[i]);
    }
    long long mid = u.size() / 2;
    for (int i = 0; i < mid; i++) {
      cout << u[i];
    }
    if (u.size() & 1) {
      cout << u[mid];
    }
    for (int i = mid - 1; i >= 0; i--) {
      cout << u[i];
    }
    if (kk != s.size() - 1) cout << "+";
    le = kk + 1;
    kq--;
  }
  cout << "\n";
}
