#include <bits/stdc++.h>
using namespace std;
int n, ji[300], k, qi, mz[400010];
char s[400010], tp[400010];
int main() {
  scanf("%d%s", &n, s + 1);
  for (int i = 1; i <= n; i++) {
    ji[s[i]]++;
  }
  for (int i = 0; i < 300; i++)
    if (ji[i] & 1) k++;
  qi = k;
  if (!qi) {
    for (k = 1;; k++)
      if (n % k == 0) break;
    n /= k;
    printf("%d\n", k);
    if (n & 1) {
      for (int i = 0, tt = 0; i < 300; i++) {
        while (ji[i]) {
          mz[++tt] = i;
          ji[i]--;
          if (tt == k) goto qaz;
        }
      }
    qaz:;
      n >>= 1;
      for (int i = 1, p = 0; i <= k; i++) {
        for (int j = 1; j <= n; j++) {
          while (!ji[p]) p++;
          ji[p] -= 2;
          tp[j] = tp[n * 2 + 2 - j] = p;
        }
        tp[n + 1] = mz[i];
        printf("%s ", tp + 1);
      }
      return 0;
    }
    n >>= 1;
    for (int i = 1, p = 0; i <= k; i++) {
      for (int j = 1; j <= n; j++) {
        while (!ji[p]) p++;
        ji[p] -= 2;
        tp[j] = tp[n * 2 + 1 - j] = p;
      }
      printf("%s ", tp + 1);
    }
    return 0;
  }
  for (;; k++)
    if (n % k == 0 && (n / k) & 1) break;
  printf("%d\n", k);
  n /= k;
  int tt = 0;
  for (int i = 0; i < 300; i++)
    if (ji[i] & 1) {
      mz[++tt] = i;
      ji[i]--;
    }
  if (tt == k) goto qazz;
  for (int i = 0; i < 300; i++) {
    while (ji[i]) {
      mz[++tt] = i;
      ji[i]--;
      if (tt == k) goto qazz;
    }
  }
qazz:;
  n >>= 1;
  for (int i = 1, p = 0; i <= k; i++) {
    for (int j = 1; j <= n; j++) {
      while (!ji[p]) p++;
      ji[p] -= 2;
      tp[j] = tp[n * 2 + 2 - j] = p;
    }
    tp[n + 1] = mz[i];
    printf("%s ", tp + 1);
  }
  return 0;
}
