#include <bits/stdc++.h>
using namespace std;
void solve(vector<int>& a, vector<string>& s, int r) {
  int n = s.size();
  int e = r / n;
  for (int i = 0; i < n; i++) {
    string tmp = s[i];
    s[i].clear();
    vector<int> nu(75, 0);
    int cur = 0;
    for (int j = 0; j < 75; j++) {
      nu[j] = min(a[j] / 2, (e - (int)tmp.length()) / 2 - cur);
      cur += nu[j];
      a[j] -= nu[j] * 2;
    }
    for (int j = 0; j < 75; j++)
      for (int k = 0; k < nu[j]; k++) s[i] += char((j + '0'));
    s[i] += tmp;
    for (int j = 74; j >= 0; j--)
      for (int k = 0; k < nu[j]; k++) s[i] += char((j + '0'));
  }
}
int main() {
  int n;
  string s;
  cin >> n >> s;
  vector<int> a(75, 0);
  for (int i = 0; i < n; i++) a[(s[i] - '0')]++;
  int l = 0, r = 0;
  for (int i = 0; i < 75; i++) l += (a[i] % 2) ? 1 : 0, r += a[i];
  vector<string> ans;
  if (l == 0) {
    ans.push_back("");
    solve(a, ans, r);
  } else {
    for (int i = 0; i < 75; i++) {
      if (a[i] % 2) {
        string tmp = "";
        tmp += char((i + '0'));
        ans.push_back(tmp);
        a[i]--;
      }
    }
    int mins = l;
    for (; mins <= r; mins += 2) {
      if (((r - mins) / 2) % mins == 0) break;
    }
    for (int i = 0; i < 75; i++)
      while (a[i] && l != mins) {
        l++, a[i]--;
        string tmp = "";
        tmp += char((i + '0'));
        ans.push_back(tmp);
      }
    solve(a, ans, r);
  }
  cout << ans.size() << endl;
  for (int i = 0; i < ans.size(); i++) cout << ans[i] << " ";
  return 0;
}
