#include <bits/stdc++.h>
using namespace std;
const long long one = 1;
const long long INF = 2e18;
const long long MOD = 1e9 + 7;
const long long N = 510;
const long long nul = 0;
const long long SIZE = 1e6 * 3;
long long cost[N][N];
long long dp[N][N];
long long pref[N][N];
string s;
void solve(long long l, long long r) {
  string ans;
  for (long long i = l; i <= r; i++) {
    ans += s[i];
  }
  long long n = ans.size();
  for (long long i = 0; i < n / 2; i++) {
    if (ans[i] != ans[n - i - 1]) {
      ans[i] = ans[n - i - 1];
    }
  }
  cout << ans;
}
signed main() {
  cin >> s;
  long long k;
  cin >> k;
  long long n = s.size();
  for (long long i = 0; i < n; i++) {
    for (long long j = 0; j < n; j++) {
      cost[i][j] = INF;
    }
  }
  for (long long i = 0; i < n; i++) {
    cost[i][i] = 0;
  }
  for (long long i = 0; i < n - 1; i++) {
    if (s[i] == s[i + 1]) {
      cost[i][i + 1] = 0;
    } else
      cost[i][i + 1] = 1;
  }
  for (long long len = 3; len <= n; len++) {
    for (long long i = 0; i < n - len + 1; i++) {
      long long j = i + len - 1;
      if (s[i] == s[j]) {
        cost[i][j] = cost[i + 1][j - 1];
      } else {
        cost[i][j] = cost[i + 1][j - 1] + 1;
      }
    }
  }
  for (long long i = 0; i < n; i++) {
    for (long long j = 1; j <= n; j++) {
      dp[i][j] = INF;
      pref[i][j] = -1;
    }
  }
  dp[0][1] = 0;
  for (long long i = 1; i < n; i++) {
    for (long long j = 1; j <= min(i + 1, k); j++) {
      if (j == 1) {
        dp[i][j] = cost[0][i];
      } else {
        for (long long i2 = 0; i2 <= i; i2++) {
          if (dp[i2][j - 1] + cost[i2 + 1][i] < dp[i][j]) {
            dp[i][j] = dp[i2][j - 1] + cost[i2 + 1][i];
            pref[i][j] = i2;
          }
        }
      }
    }
  }
  cout << dp[n - 1][k] << endl;
  vector<pair<long long, long long> > ans;
  long long i1 = n - 1, j1 = k;
  while (j1 > 0) {
    if (j1 == 1) {
      ans.push_back({0, i1});
      break;
    } else if (dp[i1][j1] == cost[0][i1]) {
      ans.push_back({0, i1});
      break;
    } else {
      for (long long i2 = 0; i2 < i1; i2++) {
        if (dp[i2][j1 - 1] + cost[i2 + 1][i1] == dp[i1][j1]) {
          ans.push_back({i2 + 1, i1});
          i1 = i2;
          j1--;
        }
      }
    }
  }
  reverse((ans).begin(), (ans).end());
  for (long long i = 0; i < ans.size(); i++) {
    solve(ans[i].first, ans[i].second);
    if (i < ans.size() - 1) {
      cout << "+";
    }
  }
}
