\begin{tikzpicture}[extended line/.style={shorten >=-#1,shorten <=-#1},extended line/.default=1.2cm]
\tkzDefPoint(0,0){o}
\tkzDefPoint(2,0){a}
\tkzDefPoint(0:3.2){Dcenter}\tkzDefPoint(0:2.3){Dpoint}
\tkzDrawCircle[color=blue](o,a)
\tkzDrawCircle[color=red](Dcenter,Dpoint)
\tkzDefPoint(30:3){p}
\tkzDefPointBy[inversion = center Dcenter through Dpoint](p)
\tkzGetPoint{q}
\draw[dashed, extended line, <->] (p)--(q);
\tkzDefPoint[thin](35:4){w1}
\tkzCircumCenter(p,q,w1)\tkzGetPoint{Ecenter}
\tkzDrawCircle[thin](Ecenter,p)
\tkzDefPointBy[inversion = center o through a](q)
\tkzGetPoint{q*}
\tkzDefPoint(30:4/3){p*}
\tkzDefPoint(35:1){w1*}
\tkzCircumCenter(p*,q*,w1*)\tkzGetPoint{Ecenter*}
\tkzDrawCircle[thin](Ecenter*,p*)
\tkzCircumCenter(p*,q*,o)\tkzGetPoint{Fcenter*}
\tkzDrawCircle[dashed](Fcenter*,p*)
\tkzDefPoint(0:4/2.3){Dpoint*}
\tkzDefPoint(3.2,.9){d1}
\tkzDefPointBy[inversion = center o through a](d1)
\tkzGetPoint{d1*}
\tkzDefPoint(3.2,-.9){d2}
\tkzDefPointBy[inversion = center o through a](d2)
\tkzGetPoint{d2*}
\tkzCircumCenter(Dpoint*,d1*,d2*)\tkzGetPoint{Dcenter*}
\tkzDrawCircle[color=red](Dcenter*,Dpoint*)
\tkzDrawPoints[fill=red](p,q)
\tkzDrawPoints(o,q*,p*)
\tkzLabelPoint[left](p){\(p\)}
\tkzLabelPoint[right](q){\(q\)}
\tkzLabelPoint[above right=-3pt](p*){\(p^*\)}
\tkzLabelPoint[below right=-5pt](q*){\(q^*\)}
\draw (120:2.2) node{\(C\)};
\draw (2.5,2.5) node{\(F\)};
\draw (Ecenter)++(60:1.25) node{\(E\)};
\draw (Dcenter)++(270:1.15) node{\(D\)};
\draw (Dcenter*)++(300:.6) node{\(D^*\)};
\draw (Ecenter*)++(180:.5) node{\(E^*\)};
\draw (Fcenter*)++(240:.9) node{\(F^*\)};
\end{tikzpicture}