#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-7;
const int MOD = 1e9 + 7;
const long long INFLL = 0x3f3f3f3f3f3f3f3f;
const int INF = 0x3f3f3f3f;
const int MAXN = 4e5 + 5;
char s[MAXN];
int vis[200], t[200];
int check(int n, int l) {
  int need = (l / 2) * n, cnt = 0;
  for (int i = 0; i < 200; i++) cnt += vis[i] / 2;
  if (cnt >= need) return 1;
  return 0;
}
void solve(int n, int l) {
  vector<char> v1, v2;
  printf("%d\n", n);
  for (int i = 0; i < 200; i++) {
    while (vis[i] >= 2) v1.push_back((char)i), vis[i] -= 2;
    if (vis[i]) v2.push_back((char)i);
  }
  for (int i = 0; i < n; i++) {
    int p = 0;
    while (p < l / 2) {
      s[p] = s[l - 1 - p] = v1[v1.size() - 1];
      v1.pop_back();
      p++;
    }
    if (l & 1) {
      if (v2.empty())
        s[p] = v1[v1.size() - 1], v2.push_back(v1[v1.size() - 1]),
        v1.pop_back();
      else
        s[p] = v2[v2.size() - 1], v2.pop_back();
    }
    s[l] = 0;
    printf("%s ", s);
  }
}
int main() {
  int n;
  cin >> n;
  scanf("%s", s + 1);
  for (int i = 1; i <= n; i++) vis[s[i]]++;
  int maxn = INF;
  for (int i = 1; i * i <= n; i++) {
    if (n % i == 0) {
      if (check(i, n / i)) maxn = min(i, maxn);
      if (check(n / i, i)) maxn = min(n / i, maxn);
    }
  }
  solve(maxn, n / maxn);
}
