#include <bits/stdc++.h>
#define my_angel QuynhNhu
//#define int long long
#define ll long long
#define ull unsigned long long
#define fi first
#define se second
#define endl "\n"
#define float double
#define ii pair<int,int>
using namespace std;
const int N = 1e6 + 5;
const int mod = 1e9 + 7;
const int base = 256;
string s;
int hsh[N];
vector<int> v[40];
void init(){
v[0].emplace_back(0);
int n = s.size();
s = " " + s;
for (int i = 1; i <= n; ++i){
hsh[i] = (hsh[i - 1] * 10 + s[i] - '0') % 33;
v[hsh[i]].emplace_back(i);
}
}
ll sol1(){
ll ans = 0;
for (int i = 0; i < 33; ++i){
ans += 1ll * v[i].size() * (v[i].size() - 1) / 2;
}
return ans;
}
int sol2(){
int ans = 0;
for (int i = 0; i < 33; ++i){
if (v[i].size()) ans = max(ans, v[i][v[i].size() - 1] - v[i][0] + 1);
}
return ans;
}
signed main(){
cin.tie(0) -> sync_with_stdio(false);
if (fopen( "input.inp" , "r" )){
freopen( "input.inp" , "r" , stdin );
freopen( "output.out" , "w" , stdout );
}
cin >> s;
init();
int x; cin >> x;
if (x == 1) cout << sol1();
else cout << sol2();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgbXlfYW5nZWwgUXV5bmhOaHUKLy8jZGVmaW5lIGludCBsb25nIGxvbmcKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSB1bGwgdW5zaWduZWQgbG9uZyBsb25nCiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBlbmRsICJcbiIKI2RlZmluZSBmbG9hdCBkb3VibGUKI2RlZmluZSBpaSBwYWlyPGludCxpbnQ+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY29uc3QgaW50IE4gPSAxZTYgKyA1Owpjb25zdCBpbnQgbW9kID0gMWU5ICsgNzsKY29uc3QgaW50IGJhc2UgPSAyNTY7CgpzdHJpbmcgczsKaW50IGhzaFtOXTsKdmVjdG9yPGludD4gdls0MF07Cgp2b2lkIGluaXQoKXsKCiAgICB2WzBdLmVtcGxhY2VfYmFjaygwKTsKICAgIGludCBuID0gcy5zaXplKCk7CiAgICBzID0gIiAiICsgczsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47ICsraSl7CiAgICAgICAgaHNoW2ldID0gKGhzaFtpIC0gMV0gKiAxMCArIHNbaV0gLSAnMCcpICUgMzM7CiAgICAgICAgdltoc2hbaV1dLmVtcGxhY2VfYmFjayhpKTsKICAgIH0KCn0KCmxsIHNvbDEoKXsKCiAgICBsbCBhbnMgPSAwOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCAzMzsgKytpKXsKICAgICAgICBhbnMgKz0gMWxsICogdltpXS5zaXplKCkgKiAodltpXS5zaXplKCkgLSAxKSAvIDI7CiAgICB9CiAgICByZXR1cm4gYW5zOwoKfQoKaW50IHNvbDIoKXsKCiAgICBpbnQgYW5zID0gMDsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMzM7ICsraSl7CiAgICAgICAgaWYgKHZbaV0uc2l6ZSgpKSBhbnMgPSBtYXgoYW5zLCB2W2ldW3ZbaV0uc2l6ZSgpIC0gMV0gLSB2W2ldWzBdICsgMSk7CiAgICB9CiAgICByZXR1cm4gYW5zOwoKfQoKc2lnbmVkIG1haW4oKXsKCWNpbi50aWUoMCkgLT4gc3luY193aXRoX3N0ZGlvKGZhbHNlKTsKCiAgICBpZiAoZm9wZW4oICJpbnB1dC5pbnAiICwgInIiICkpewogICAgCWZyZW9wZW4oICJpbnB1dC5pbnAiICwgInIiICwgc3RkaW4gKTsKICAgIAlmcmVvcGVuKCAib3V0cHV0Lm91dCIgLCAidyIgLCBzdGRvdXQgKTsKCX0KCiAgICBjaW4gPj4gczsKICAgIGluaXQoKTsKICAgIGludCB4OyBjaW4gPj4geDsKCiAgICBpZiAoeCA9PSAxKSBjb3V0IDw8IHNvbDEoKTsKICAgIGVsc2UgY291dCA8PCBzb2wyKCk7CgoJcmV0dXJuIDA7Cn0K