#include<cstdio>
#define min(a,b) (a<b?a:b)
long long n,k;
int main(){
	scanf("%lld%lld",&n,&k);
	printf("%lld",min(n%k,k-n%k));
}
### Prompt

Create a solution in CPP for the following problem:

Given any integer x, Aoki can do the operation below.

Operation: Replace x with the absolute difference of x and K.

You are given the initial value of an integer N. Find the minimum possible value taken by N after Aoki does the operation zero or more times.

Constraints

* 0 ≤ N ≤ 10^{18}
* 1 ≤ K ≤ 10^{18}
* All values in input are integers.

Input

Input is given from Standard Input in the following format:


N K


Output

Print the minimum possible value taken by N after Aoki does the operation zero or more times.

Examples

Input

7 4


Output

1


Input

2 6


Output

2


Input

1000000000000000000 1


Output

0

### Response

```cpp
#include<cstdio>
#define min(a,b) (a<b?a:b)
long long n,k;
int main(){
	scanf("%lld%lld",&n,&k);
	printf("%lld",min(n%k,k-n%k));
}
```