#include <iostream>
#include <vector>
#include <cstring>

using namespace std;

#define MP make_pair
#define PB push_back
#define X first
#define Y second

bool isExist[5001][5001];

int main(void){
	int n;
	
	while(cin >> n && n){
		vector<pair<int,int> > vpii;
		int ret=0;
		
		memset(isExist, false, sizeof(isExist));
		
		int x, y;
		for(int i=0;i<n;i++){
			cin >> x >> y;
			vpii.PB(MP(x,y));
			isExist[x][y] = true;
		}
		
		for(int i=0;i<n;i++){
			for(int j=i+1;j<n;j++){
				int dx = vpii[j].X - vpii[i].X;
				int dy = vpii[j].Y - vpii[i].Y;
				
				if(0 <= vpii[j].X + dy && vpii[j].X + dy < 5001 &&
				0 <= vpii[j].Y - dx && vpii[j].Y - dx < 5001 &&
				0 <= vpii[i].X + dy && vpii[i].X + dy < 5001 &&
				0 <= vpii[i].Y - dx && vpii[i].Y - dx < 5001){
					if(isExist[vpii[j].X + dy][vpii[j].Y - dx] && 
					isExist[vpii[i].X + dy][vpii[i].Y - dx]){
						ret = max(ret, (dx+dy)*(dx+dy) - (dx * dy)*2);
					}
				}
				
				if(0 <= vpii[j].X + dy && vpii[j].X + dy < 5001 &&
				0 <= vpii[j].Y - dx && vpii[j].Y - dx < 5001 &&
				0 <= vpii[i].X + dy && vpii[i].X + dy < 5001 &&
				0 <= vpii[i].Y - dx && vpii[i].Y - dx < 5001){
					if(isExist[vpii[j].X + dy][vpii[j].Y - dx] && 
					isExist[vpii[i].X + dy][vpii[i].Y - dx]){
						ret = max(ret, (dx+dy)*(dx+dy) - (dx * dy)*2);
					}
				}
				
			}
		}
		cout << ret << endl;
	}
}