#include <bits/stdc++.h> // NeOWami
using namespace std;
#define ft first
#define sc second
#define int long long
string a;
int b;
int signA = 1, signB = 1;
void ADD(int &u, int v, int MOD) {
u += v;
if (u >= MOD) u -= MOD;
}
int MUL(int a, int b, int MOD) {
int ans = 0 % MOD;
for (; b; b >>= 1, ADD(a, a, MOD)) if (b & 1) ADD(ans, a, MOD);
return ans;
}
int getRemainder(string a, int b) {
int r = 0;
for (char c: a) {
r = MUL(r, 10, b);
ADD(r, (c - '0') % b, b);
}
return r;
}
signed main() {
cin.tie(NULL)->sync_with_stdio(false);
if(ifstream("remainder.inp")) {
freopen("remainder.inp", "r", stdin);
freopen("remainder.out", "w", stdout);
}
cin >> a >> b;
if (a[0] == '-') {
signA = -1;
a = a.substr(1, (int)a.size() - 1);
}
if (b <= -1) {
signB = -1;
b *= -1;
}
int r = getRemainder(a, b);
if (signA == 1 && signB == 1) cout << r;
else if (signA == -1 && signB == 1) cout << (b - r);
else if (signA == 1 && signB == -1) cout << r;
else if (signA == -1 && signB == -1) cout << (b - r);
// Form theo phép tính của Google
// if (signA == 1 && signB == 1) cout << r;
// else if (signA == -1 && signB == 1) cout << (B - r);
// else if (signA == 1 && signB == -1) cout << "-" << (B - r);
// else if (signA == -1 && signB == -1) cout << "-" << r;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IC8vIE5lT1dhbWkKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgZnQgZmlyc3QKI2RlZmluZSBzYyBzZWNvbmQKI2RlZmluZSBpbnQgbG9uZyBsb25nCnN0cmluZyBhOwppbnQgYjsKaW50IHNpZ25BID0gMSwgc2lnbkIgPSAxOwp2b2lkIEFERChpbnQgJnUsIGludCB2LCBpbnQgTU9EKSB7CiAgICB1ICs9IHY7CiAgICBpZiAodSA+PSBNT0QpIHUgLT0gTU9EOwp9IAppbnQgTVVMKGludCBhLCBpbnQgYiwgaW50IE1PRCkgewogICAgaW50IGFucyA9IDAgJSBNT0Q7CiAgICBmb3IgKDsgYjsgYiA+Pj0gMSwgQUREKGEsIGEsIE1PRCkpIGlmIChiICYgMSkgQUREKGFucywgYSwgTU9EKTsgCiAgICByZXR1cm4gYW5zOwp9CmludCBnZXRSZW1haW5kZXIoc3RyaW5nIGEsIGludCBiKSB7CiAgICBpbnQgciA9IDA7CiAgICBmb3IgKGNoYXIgYzogYSkgewogICAgICAgIHIgPSBNVUwociwgMTAsIGIpOwogICAgICAgIEFERChyLCAoYyAtICcwJykgJSBiLCBiKTsKICAgIH0KICAgIHJldHVybiByOwp9CgpzaWduZWQgbWFpbigpIHsKICAgIGNpbi50aWUoTlVMTCktPnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBpZihpZnN0cmVhbSgicmVtYWluZGVyLmlucCIpKSB7CiAgICAgICAgZnJlb3BlbigicmVtYWluZGVyLmlucCIsICJyIiwgc3RkaW4pOwogICAgICAgIGZyZW9wZW4oInJlbWFpbmRlci5vdXQiLCAidyIsIHN0ZG91dCk7CiAgICB9CiAgICBjaW4gPj4gYSA+PiBiOwogICAgaWYgKGFbMF0gPT0gJy0nKSB7CiAgICAgICAgc2lnbkEgPSAtMTsKICAgICAgICBhID0gYS5zdWJzdHIoMSwgKGludClhLnNpemUoKSAtIDEpOwogICAgfQogICAgaWYgKGIgPD0gLTEpIHsKICAgICAgICBzaWduQiA9IC0xOwogICAgICAgIGIgKj0gLTE7CiAgICB9CiAgICBpbnQgciA9IGdldFJlbWFpbmRlcihhLCBiKTsKICAgIGlmIChzaWduQSA9PSAxICYmIHNpZ25CID09IDEpIGNvdXQgPDwgcjsKICAgIGVsc2UgaWYgKHNpZ25BID09IC0xICYmIHNpZ25CID09IDEpIGNvdXQgPDwgKGIgLSByKTsKICAgIGVsc2UgaWYgKHNpZ25BID09IDEgJiYgc2lnbkIgPT0gLTEpIGNvdXQgPDwgcjsKICAgIGVsc2UgaWYgKHNpZ25BID09IC0xICYmIHNpZ25CID09IC0xKSBjb3V0IDw8IChiIC0gcik7CgogICAgLy8gRm9ybSB0aGVvIHBow6lwIHTDrW5oIGPhu6dhIEdvb2dsZQogICAgLy8gaWYgKHNpZ25BID09IDEgJiYgc2lnbkIgPT0gMSkgY291dCA8PCByOwogICAgLy8gZWxzZSBpZiAoc2lnbkEgPT0gLTEgJiYgc2lnbkIgPT0gMSkgY291dCA8PCAoQiAtIHIpOwogICAgLy8gZWxzZSBpZiAoc2lnbkEgPT0gMSAmJiBzaWduQiA9PSAtMSkgY291dCA8PCAiLSIgPDwgKEIgLSByKTsKICAgIC8vIGVsc2UgaWYgKHNpZ25BID09IC0xICYmIHNpZ25CID09IC0xKSBjb3V0IDw8ICItIiA8PCByOwogICAgcmV0dXJuIDA7Cn0=