#include <bits/stdc++.h>
using namespace std;
typedef unsigned long long ull;
typedef long long ll;
typedef pair<int, int> pii;
#ifdef local
#define debug(...) cerr << "[" << #__VA_ARGS__ << "]:", debug_out(__VA_ARGS__)
#else
#define debug(...) 42
#endif
#define f(i, l, r) for (int i = l; i <= r; ++i)
#define rf(i, r, l) for (int i = r; i >= l; --i)
#define all(x) (x).begin(), (x).end()
const int N = 2e6+10;
char s[N];
int main() {
    ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
#ifdef local
    freopen("in.txt", "r", stdin);
#endif
    int n;ll a, b; cin >> n >> a >> b;
    cin >> s + 1;
    map<char, int> mp; int tot = -1;
    f(i, 1, n)if (!mp.count(s[i]))mp[s[i]] = ++tot;

    vector<bool> ok(mp.size());
    n = (1 << mp.size())-1;
    vector<int> sum(n + 1), l(n + 1, 1e9), r(sum), L(mp.size(),1e9), R(mp.size()), SUM(R);
    vector<bool> C(n + 1);
    int w = strlen(s + 1);
    f(i, 1, w) {
        int j = mp[s[i]];
        SUM[j]++; L[j] = min(L[j], i); R[j] = max(R[j], i);
    }
    f(S, 1, n) {
        for (int j = 0; j < mp.size(); j++)if (S & (1 << j)) {
            sum[S] += SUM[j];
            l[S] = min(l[S], L[j]);
            r[S] = max(r[S], R[j]);
        }
        if ((r[S] - l[S] + 1) * a <= b * sum[S])C[S] = 1;
    }
    
    vector<int> p(mp.size()); iota(all(p), 0);
    sort(all(p), [&](int lval, int rval) {
        return L[lval] < L[rval];
        });

    vector<int> dp(n + 1); dp[0] = 1;
    f(S, 1, n-1){
        int S2 = 0;
        for (int i : p)if (S & (1 << i)) {
            if (dp[S2] & dp[S^S2]) {
                dp[S] = 1;
            }
            S2 |= 1 << i;
        }
        if(C[S])f(j, 0, mp.size() - 1)if (S & (1 << j))dp[S] |= dp[S ^ (1 << j)];
    }
    f(j, 0, mp.size() - 1)if (dp[n ^ (1 << j)])ok[j] = 1;
    int num = 0;
    for (auto it : mp)num += ok[it.second];
    cout << num;
    for (auto it : mp)if (ok[it.second])cout << " "<<it.first;
}