I got the CNF pretty easily with simple transformations:
\begin{aligned} a \leftrightarrow \neg (b \leftrightarrow \neg c)\\ a \leftrightarrow \neg ((b \to \neg c) \land (\neg c \to b))\\ a \leftrightarrow \neg((\neg b \lor\neg c) \land (c \lor b ))\\ (a \to ((b\land v) \lor (\neg b \land \neg c)) &\land (((b\land c) \lor (\neg b \land \neg c)) \to a)\\ (\neg a \lor ((b\land v) \lor (\neg b \land \neg c)) &\land (\neg((b\land c) \lor (\neg b \land \neg c)) \lor a) \\ (\neg a \lor ((b\land v) \lor (\neg b \land \neg c)) &\land ((\neg(b\land c) \land \neg (\neg b \land \neg c)) \lor a) \\ (\neg a \lor ((b\land v) \lor (\neg b \land \neg c)) &\land (((\neg b\lor \neg c) \land (b \land c)) \lor a) \\ (\neg a \lor ((b\land v) \lor (\neg b \land \neg c)) &\land ((a \lor \neg b \lor \neg c) \land (a \lor b \lor c))\\ (((\neg a \lor b)\land (\neg a \lor c)) \lor (\neg b \land \neg c)) &\land ((a \lor \neg b \lor \neg c) \land (a \lor b \lor c)) \\ (((\neg a \lor b) \lor (\neg b \land \neg c)) \lor ((\neg a \lor c) \lor (\neg b \land \neg c))) &\land ((a \lor \neg b \lor \neg c) \land (a \lor b \lor c)) \\ (\underbrace{(\neg a \lor b \lor \neg b)}_{1} \land (\neg a \lor b \lor \neg c)\land(\neg a \lor \neg b \lor c) \land \underbrace{(\neg a \lor c \lor \neg c)}_1) &\land ((a \lor \neg b \lor \neg c) \land (a \lor b \lor c)) \\ (\neg a \lor b \lor \neg c)\land(\neg a \lor \neg b \lor c) &\land (a \lor \neg b \lor \neg c) \land (a \lor b \lor c) \end{aligned}
I'm not sure If I missed any shortcuts, but I think it is correct. Now, is there any smart short-cuts to change this into DNF other than use distributivity numerous times. I tried that route, starting from the CNF solution and I gave up after I had 1 A4 paper full of formulas and not nearing the end. Any tricks?
You are dealing with parity functions here. One preliminary observation is that $\neg(x \leftrightarrow \neg y)$ is equivalent to $(x \leftrightarrow y)$. Hence your function is equivalent to $a \leftrightarrow b \leftrightarrow c$, which is the parity function of $a$, $b$, and $c$.
This function, let's call it $f$, is true when an odd number of variables are true. With three variables, there's one way to have all true variables, and three ways to have one true variable. Hence the DNF for $f$ has four terms, each with three literals, and you can write it by inspection.
You may also notice that the negation of $f$ is written in CNF by conjoining the four terms that are not in your CNF for $f$. De Morgan then delivers the DNF for $f$ with minimal effort. In our case, since
$$ f = (\neg a \vee \neg b \vee c) \wedge (a \vee \neg b \vee \neg c) \wedge (\neg a \vee b \vee \neg c) \wedge (a \vee b \vee c) \enspace,$$
we write
$$ \neg f = (\neg a \vee b \vee c) \wedge (a \vee \neg b \vee c) \wedge (a \vee b \vee \neg c) \wedge (\neg a \vee \neg b \vee \neg c) \enspace.$$
Applying De Morgan's laws results in
$$ f = (a \wedge \neg b \wedge \neg c) \vee (\neg a \wedge b \wedge \neg c) \vee (\neg a \wedge \neg b \wedge c) \vee (a \wedge b \wedge c) \enspace,$$
which is the parity function as expected.