/* http://projecteuler.net/
 *
 * Problem 44
 * Find the pair of pentagonal numbers, P_j and P_k, for which their sum
 * and difference is pentagonal and D = |P_k − P_j| is minimised; what is
 * the value of D?
 *
 * Solution by Melkor (Filip Niksic, fniksic@gmail.com)
 *
 **/

#include <iostream>
#include <set>

using namespace std;

const int max_num = 100000000;

set<int> pentagonal;

inline int P(int n) {
    return n*(3*n-1)/2;
}

int main() {
    int D = max_num;
    for (int n = 1; P(n) < max_num; ++n)
	pentagonal.insert(P(n));
    for (int i = 1; P(i+1) < max_num; ++i)
	for (int j = i+1; P(j) < max_num; ++j)
	    if (pentagonal.count(P(j)+P(i)) && pentagonal.count(P(j)-P(i))
		&& P(j)-P(i) < D)
		D = P(j) - P(i);
    cout << D << endl;
    return 0;
}

