#include <bits/stdc++.h>
using namespace std;
int dx[] = {0, 0, 1, -1, 1, 1, -1, -1};
int dy[] = {1, -1, 0, 0, -1, 1, 1, -1};
int freq[300] = {0};
string get(string c, int pairs) {
  string p = c;
  for (int i = 0; i < 300 && pairs > 0; i++) {
    int mn = min(pairs, freq[i] / 2);
    string a(mn, char(i));
    p = a + p + a;
    freq[i] -= mn * 2;
    pairs -= mn;
  }
  return p;
}
int main() {
  int n;
  string s;
  cin >> n >> s;
  int twos = 0;
  set<char> uni;
  for (int i = 0; i < n; i++) {
    uni.insert(s[i]);
    freq[s[i]]++;
  }
  set<char>::iterator it = uni.begin();
  vector<string> ones;
  string c = "";
  for (; it != uni.end(); it++) {
    twos += freq[*it] / 2;
    if (freq[*it] % 2 == 1)
      ones.push_back(string(1, *it)), c = string(1, *it), freq[*it]--;
  }
  if (ones.size() == 1 || ones.size() == 0) {
    printf("%d\n", 1);
    cout << get(c, twos);
  } else {
    while (twos % ones.size() != 0) {
      for (int i = 0; i < 300; i++) {
        if (freq[i] >= 2) {
          ones.push_back(string(1, char(i)));
          ones.push_back(string(1, char(i)));
          freq[i] -= 2;
          break;
        }
      }
      twos--;
    }
    printf("%d\n", (int)ones.size());
    for (int i = 0; i < ones.size(); i++)
      cout << get(ones[i], twos / ones.size()) << " ";
  }
}
