#include<math.h>
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
struct Point
{
double x,y;
Point(){}
Point(double xx,double yy){
x=xx,y=yy;
}
};
struct line
{
Point a,b;
};
double Cross(Point p1,Point p2,Point p3){
return (p2.x-p1.x)*(p3.y-p1.y)-(p2.y-p1.y)*(p3.x-p1.x);
}
double Dis(Point A, Point B){
return sqrt((A.x-B.x)*(A.x-B.x) + (A.y-B.y)*(A.y-B.y));
}
Point operator - (Point A,Point B){
return Point(A.x-B.x, A.y-B.y);
}
Point operator + (Point A, Point B){
return Point(A.x+B.x, A.y+B.y);
}
Point operator * (Point A, double p){
return Point(A.x*p, A.y*p);
}
bool operator == (Point A, Point B){
return (A.x-B.x) == 0 && (A.y-B.y) == 0;
}
Point intersection(line u,line v){
Point ret=u.a;
double t=((u.a.x-v.a.x)*(v.a.y-v.b.y)-(u.a.y-v.a.y)*(v.a.x-v.b.x))
/((u.a.x-u.b.x)*(v.a.y-v.b.y)-(u.a.y-u.b.y)*(v.a.x-v.b.x));
ret.x+=(u.b.x-u.a.x)*t;
ret.y+=(u.b.y-u.a.y)*t;
return ret;
}
//三角形外心模板
Point get_center(Point a,Point b,Point c)
{
line u,v;
u.a.x=(a.x+b.x)/2;
u.a.y=(a.y+b.y)/2;
u.b.x=u.a.x-a.y+b.y;
u.b.y=u.a.y+a.x-b.x;
v.a.x=(a.x+c.x)/2;
v.a.y=(a.y+c.y)/2;
v.b.x=v.a.x-a.y+c.y;
v.b.y=v.a.y+a.x-c.x;
return intersection(u,v);
}
double get_ans(Point p,Point px,Point p1,Point p2,Point p3)
{
double temp=Cross(p1,p2,p3);//判断给定圆弧方向
double f=atan2((px-p).y,(px-p).x);//和x正半轴的夹角
double f1=atan2((p1-p).y,(p1-p).x);
double f2=atan2((p2-p).y,(p2-p).x);
double f3=atan2((p3-p).y,(p3-p).x);
double ans1=fabs(Dis(px,p)-Dis(p,p1));//到圆心距离减去半径的绝对值
double ans2=min(Dis(px,p1),Dis(px,p3));//到端点的最小值
if(temp<0){ //顺时针
if(f1<f3){//画图可知
if((f2>=f1&&f2<=f3)==(f>=f1&&f<=f3))//p点和p2点在同一个区间
return ans1;
else //p点和p2点不在同一个区间
return ans2;
}
else{
if((f2>=f3&&f2<=f1)==(f>=f3&&f<=f1))
return ans1;
else
return ans2;
}
}
else{
if(f1>f3){
if((f2<=f1&&f2>=f3)==(f<=f1&&f>=f3))
return ans1;
else
return ans2;
}
else{
if((f2<=f3&&f2>=f1)==(f<=f3&&f>=f1))
return ans1;
else
return ans2;
}
}
}
int main()
{
int cases=1;
//freopen("in.txt","r",stdin);
Point p,p1,p2,p3,px;
while(scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&p1.x,&p1.y,&p2.x,&p2.y,&p3.x,&p3.y,&px.x,&px.y)!=EOF)
{
p=get_center(p1,p2,p3);
double ans=get_ans(p,px,p1,p2,p3);
printf("Case %d: %0.3lf\n",cases++,ans);
}
return 0;
}