//CF1450E
#include <bits/stdc++.h>
#define MP std::make_pair
#define PB push_back
#define FI first
#define SE second
#define space putchar(' ')
#define endl putchar('\n')
typedef long long ll;
typedef unsigned long long ull;
typedef std::pair <int, int> pii;
const int INF = 1000000005;
const int max_E = 20;
int n, ka, kb, ml[1 << max_E], mr[1 << max_E], cnt[1 << max_E], id[26], qwq;
bool dp[1 << max_E], dps[1 << max_E];
char Iid[max_E], s[5005];
int read() {
	char c = getchar(); int ans = 0;
	while (!isdigit(c)) c = getchar();
	while (isdigit(c)) ans = ans * 10 + c - '0', c = getchar();
	return ans;
}
void Write(int x) {
	if (x < 0) putchar('-'), x = -x;
	if (x < 10) putchar(x + '0');
	else Write(x / 10), putchar(x % 10 + '0');
}
int max(int x, int y) {return x > y ? x : y;}
int min(int x, int y) {return x < y ? x : y;}
bool check(int s) {
	return ka * (mr[s] - ml[s] + 1) <= cnt[s] * kb;
}
int main() {
	n = read(), ka = read(), kb = read(); scanf("%s", s + 1); memset(id, -1, 104);
	for (int i = 1; i <= n; ++cnt[1 << id[s[i] - 'a']], i++)
		if (id[s[i] - 'a'] == -1) Iid[id[s[i] - 'a'] = qwq] = s[i], ++qwq, ml[1 << id[s[i] - 'a']] = mr[1 << id[s[i] - 'a']] = i;
		else mr[1 << id[s[i] - 'a']] = i;
	for (int i = 0; i < qwq; i++) dp[1 << i] = true, dps[1 << i] = check(1 << i);
	dp[0] = dps[0] = true;
	for (int i = 1; i < (1 << qwq); i++) {
		if (!(i & (i - 1))) continue;
		for (int j = 0, sum = 0; j < qwq; j++) {
			if (!(i >> j & 1) || (sum |= (1 << j)) == i) continue;
			cnt[i] = cnt[sum] + cnt[i ^ sum], ml[i] = min(ml[sum], ml[i ^ sum]), mr[i] = max(mr[sum], mr[i ^ sum]);
			dps[i] |= (dps[sum] && dps[i ^ sum]);
			if (dp[sum] && dp[i ^ sum] && (dps[sum] || dps[i ^ sum])) dp[i] = true;
		}
		for (int j = 0; j < qwq; j++)
			if ((i >> j & 1) && dp[i ^ (1 << j)] && check(i ^ (1 << j))) dp[i] = true;
		dps[i] |= (dp[i] && check(i));
	}
	std::set <char> set;
	for (int i = 0; i < qwq; i++)
		if (dps[((1 << qwq) - 1) ^ (1 << i)]) set.insert(Iid[i]);
	Write(set.size());
	for (auto i : set) space, putchar(i);
	return 0;
}
