#include <bits/stdc++.h>
using namespace std;
double X1, Y1, X2, Y2, X3, Y3, T1, T2;
double ans = 0;
double sqr(double x) { return x * x; }
double dis(double X1, double Y1, double X2, double Y2) {
  return sqrt(sqr(X1 - X2) + sqr(Y1 - Y2));
}
double calc(double X1, double Y1, double X2, double Y2, double T, double Xp,
            double Yp) {
  if (dis(X1, Y1, Xp, Yp) + dis(X2, Y2, Xp, Yp) - dis(X1, Y1, X2, Y2) <= T)
    return dis(X1, Y1, X2, Y2) + T - dis(X2, Y2, Xp, Yp);
  double l = 0, r = 1, m, X3, Y3, res;
  for (int k = 400; k; k--) {
    m = (l + r) / 2;
    X3 = X1 * (1 - m) + Xp * m, Y3 = Y1 * (1 - m) + Yp * m;
    res = dis(X1, Y1, X3, Y3) + dis(X2, Y2, X3, Y3) - dis(X1, Y1, X2, Y2);
    if (res <= T)
      l = m;
    else
      r = m;
  }
  return l * dis(X1, Y1, Xp, Yp);
}
double calc(double x, double y) {
  return min(calc(X1, Y1, X2, Y2, T2, x, y), calc(X1, Y1, X3, Y3, T1, x, y));
}
int main() {
  scanf("%lf%lf", &T1, &T2);
  scanf("%lf%lf%lf%lf%lf%lf", &X1, &Y1, &X2, &Y2, &X3, &Y3);
  ans = max(ans, max(calc(X2, Y2), calc(X3, Y3)));
  if (dis(X1, Y1, X3, Y3) + dis(X3, Y3, X2, Y2) - dis(X1, Y1, X2, Y2) <= T2)
    ans = max(ans, min(dis(X1, Y1, X2, Y2) + T2,
                       dis(X1, Y1, X3, Y3) + dis(X3, Y3, X2, Y2) + T1));
  double l = 0, r = 1, m1, m2, res1, res2, Xm1, Ym1, Xm2, Ym2;
  for (int k = 400; k; k--) {
    m1 = (l * 2 + r) / 3;
    m2 = (l + r * 2) / 3;
    Xm1 = X2 * (1 - m1) + X3 * m1;
    Ym1 = Y2 * (1 - m1) + Y3 * m1;
    Xm2 = X2 * (1 - m2) + X3 * m2;
    Ym2 = Y2 * (1 - m2) + Y3 * m2;
    res1 = calc(Xm1, Ym1), res2 = calc(Xm2, Ym2);
    ans = max(ans, max(res1, res2));
    if (res1 > res2)
      r = m2;
    else
      l = m1;
  }
  printf("%.8lf\n", ans);
  return 0;
}
