#include <bits/stdc++.h>
using namespace std;
void pr(char c, int t) {
  while (t--) printf("%c", c);
}
int main() {
  int n, i, co(0), s;
  map<char, int> c;
  char ch;
  scanf("%d", &n);
  for (i = 0; i < n; ++i) {
    scanf(" %c", &ch);
    ++c[ch];
  }
  for (const auto &e : c)
    if (e.second & 1) ++co;
  if (co < 2) {
    printf("1\n");
    for (auto it = c.begin(); it != c.end(); ++it)
      if (~it->second & 1) pr(it->first, it->second / 2);
    for (auto it = c.begin(); it != c.end(); ++it)
      if (it->second & 1) {
        pr(it->first, it->second);
        c.erase(it);
        break;
      }
    for (auto it = c.rbegin(); it != c.rend(); ++it)
      if (~it->second & 1) pr(it->first, it->second / 2);
    printf("\n");
    return 0;
  }
  for (s = co; n % s || !(n / s & 1); ++s)
    ;
  printf("%d\n", s);
  vector<set<pair<int, char>>> str;
  vector<int> tot;
  for (auto &e : c)
    if (e.second & 1) {
      set<pair<int, char>> tmp;
      tmp.insert({1, e.first});
      str.push_back(tmp);
      tot.push_back(1);
      --e.second;
    }
  for (auto &e : c)
    while (co < s && e.second) {
      set<pair<int, char>> tmp;
      tmp.insert({1, e.first});
      str.push_back(tmp);
      tot.push_back(1);
      --e.second;
      ++co;
    }
  map<char, int>::iterator it(c.begin());
  for (i = 0; i < s; ++i)
    while (tot[i] < n / s) {
      while (!it->second) ++it;
      int tmp(min(it->second, n / s - tot[i]));
      str[i].insert({tmp, it->first});
      it->second -= tmp;
      tot[i] += tmp;
    }
  for (i = 0; i < s; ++i) {
    if (i) printf(" ");
    for (auto it = str[i].rbegin(); it != str[i].rend(); ++it)
      pr(it->second, it->first / 2);
    for (auto it = str[i].begin(); it != str[i].end(); ++it)
      pr(it->second, (it->first + 1) / 2);
  }
  printf("\n");
  return 0;
}
