[ EDITED, there were 2 useless lines in the deduction below]
The Smullyan style problem :
John: If (and only if) Bill is a knave, then I am a knave.
Bill: We are of different kinds.
With the understanding that knights only tell true statements and knaves only tell false statements, identify John and Bill's types.
(It therefore follows that if $J$ is the proposition that John is a knight, and John says a logical statement $X$, that $J\leftrightarrow X$ is a tautology.)
My attempt uses natural deduction; but the reasoning is rather long.
Can you think of a shorter natural deduction style proof?
What would be the quickest way to solve the problem according to you?
Below , "J" means " John is a knight" and "B" means " Bill is a knight".
Note: this solution makes Bill's statement true and John's statement false; which is coherent with their being a knight and a knave respectively.
Indeed if we have ( B & ~J) ( that is our alledged solution) John's statement is false, since this statement is equivalent to ( B <-> J) , which, in turn, is equivalent to ~ (B&~J) & ~ ( J&~B).

Here's a proof I made on http://proofs.openlogicproject.org/ Mine is 13 statements versus your 39 (since your proof didn't go to my statement 14). On the other hand, I stuck with a bidirectional formulation and I gather different systems do different things with $\leftrightarrow$E. Still, make of this what you will.