#include <bits/stdc++.h>
using namespace std;
#define int long long
int qead() {
int s = 0, w = 1;
char c = getchar();
while (!isdigit(c)) {
w = (c == '-') ? -w : w;
c = getchar();
}
while (isdigit(c)) {
s = s * 10 + c - 48;
c = getchar();
}
return s * w;
}
void write(int x) {
if (x > 9) write(x / 10);
putchar(x % 10 + 48);
}
void pr(int x) {
if (x < 0) putchar('-'), x = -x;
write(x);
}
#define end_ putchar('\n')
#define spc_ putchar(' ')
const int maxN = 2e6 + 7, mod = 998244353;
int ksm(int a, int b = mod - 2) {
int res = 1;
while (b) {
if (b & 1)
res = res * a % mod;
a = a * a % mod;
b >>= 1;
}
return res;
}
int n, k, a[maxN];
int fc[maxN], ifc[maxN];
int C(int n, int m) {
return fc[n] * ifc[m] % mod * ifc[n - m] % mod;
}
using ubt = unsigned long long;
const int BASE = 12345;
ubt H[maxN], S[maxN];
ubt get(int l, int r) {
return S[r] - S[l - 1] * H[r - l];
}
int s[maxN], p2[maxN];
int calc(int l, int r) {
return s[r] - s[l - 1] * p2[r - l];
}
void init() {
fc[0] = 1;
for (int i = 1; i <= n; i++)
fc[i] = fc[i - 1] * i % mod;
ifc[0] = 1;
int tmp = 1;
for (int i = 1; i <= n; i++)
ifc[i] = (tmp = tmp * fc[i] % mod);
tmp = ksm(tmp);
for (int i = n; i >= 1; i--)
ifc[i] = ifc[i - 1] * tmp % mod;
tmp = tmp * fc[i] % mod;
}
H[0] = 1;
for (int i = 1; i <= n; i++) {
S[i] = S[i - 1] * BASE + a[i];
H[i] = H[i - 1] * BASE;
}
p2[0] = 1;
for (int i = 1; i <= n; i++) {
s[i] = (s[i - 1] * 2 + a[i]) % mod;
p2[i] = p2[i - 1] * 2 % mod;
}
}
signed main() {
n = qead(), k = qead();
for (int i = 1; i <= n; i++)
scanf("%1lld", &a[i]);
init();
if (n == k) {
int tot = 0;
for (int i = 1; i <= n; i++)
tot += a[i];
pr(tot), spc_, pr(1), end_;
return 0;
}
int cnt = 0;
for (int i = 1; i <= n; i++)
if (a[i]) break;
else cnt++;
if (cnt >= k - 1) {
int tot = calc(n - cnt + 1, n);
int ans = 0;
for (int i = k; i <= n; i++)
ans = (ans + C(cnt, i - 1)) % mod;
pr(tot), spc_, pr(ans), end_;
return 0;
}
}