#include <bits/stdc++.h>

using namespace std;

int main(){
	long long int n, k;
	cin>>n>>k;
	
	
	cout<<min(n%k , k-(n%k));
	
	return 0;
	}

### Prompt

Construct a cpp code solution to the problem outlined:

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 <bits/stdc++.h>

using namespace std;

int main(){
	long long int n, k;
	cin>>n>>k;
	
	
	cout<<min(n%k , k-(n%k));
	
	return 0;
	}

```