// author: yurii alekhin
// date: 22.04.2025
#include <iostream>
#include <vector>
#include <cstdint>
#include <functional>
#include <iomanip>
#include <cmath>
#include <algorithm>
#include <numeric>
using namespace std;

#define int32_t int64_t

struct Point {
    int32_t x, y;
};

istream &operator>>(istream &in, Point &p) {
    in >> p.x >> p.y;
    return in;
}

int64_t distance(Point &a, Point &b) {
    return (a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y);
}

signed main(void) {
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    int32_t n;
    cin >> n;
    vector<Point> a(n), b(n);
    for (auto &x : a) cin >> x;
    for (auto &x : b) cin >> x;
    int64_t ans = 0;
    vector<int32_t> p(n);
    iota(p.begin(), p.end(), 0ll);
    do {
        int64_t mx = 5e18;
        for (int32_t i = 0; i < n; ++i) {
            mx = min(mx, distance(a[i], b[p[i]]));
        }
        ans = max(ans, mx);
    } while (next_permutation(p.begin(), p.end()));
    cout << fixed << setprecision(9) << sqrtl(ans) << '\n';
    return 0;
}
