#include <bits/stdc++.h>

typedef long long LL;
typedef std::valarray<LL> data;

const int N = 200005, M = 100;

std::string s, t;
LL l, r; int p;

void solve() {
	static int nxt[N], n = s.size();
	for (int i = 1, p = nxt[0] = -1; i <= n; nxt[i++] = ++p)
		while (p >= 0 && s[p] != s[i - 1]) p = nxt[p];
	int p = n; while (p << 1 > n) p = nxt[p];
	n -= p, s.resize(n), t = s.substr(0, n - nxt[n]);
}

LL len[M];
data sum[M];

data count(const std::string &s, int n = 0x3f3f3f3f) {
	data ret(26);
	for (int i = 0; i < n && i < s.size(); ++i) ++ret[s[i] - 'a'];
	return ret;
}

data dfs(int dep, LL n) {
	if (dep <= 1) return count(dep ? s : t, n);
	if (n <= len[dep - 1]) return dfs(dep - 1, n);
	else return sum[dep - 1] + dfs(dep - 2, n - len[dep - 1]);
}

int main() {
	std::ios::sync_with_stdio(0), std::cin.tie(0);
	std::cin >> s >> l >> r, solve();
	len[1] = s.size(), len[0] = t.size();
	sum[1] = count(s), sum[0] = count(t);
	for (p = 1; len[p] < 1e18; ++p)
		len[p + 1] = len[p] + len[p - 1], sum[p + 1].resize(26), sum[p + 1] = sum[p] + sum[p - 1];
	data ret = dfs(p, r) - dfs(p, l - 1);
	for (int i = 0; i < 26; ++i) std::cout << ret[i] << ' '; std::cout << '\n';
	return 0;
}