[KINDLY IGNORE THE YELLOW PATH WITHIN FF2]
I understood it in this way . I’m adding my answer just in case someone finds it easier to assimilate.
we determine the current state of each FF based on the previous state of FF.

In the diagram , lets say the current state values are at Aout , Bout and Cout . It will take effect once Ain , Bin and Cin is available from the previous state.
For FF1 to change state (Follow the green path):
t1 = Time for Ain to generate + time for FF1 to propagate = 0 (it’s always high)+ 10 = 10ns
For FF2 to change state (follow the blue path):
t2 = Time to generate Bin + time for FF2 to propagate
= Time to generate Aout + Time for logic 1 + time for AND gate + time for FF2 to propagate
= 0(Aout is already there from prev state) + 0(always high) + 10 + 10
= 20 ns
For FF3 to change state(follow the yellow path):
t3 = Time to generate Cin + time for FF3 to propagate
= time for Bout + time for Bin + time for AND gate + time for FF3 to propagate
= 0 + time for Bin + time for AND gate + time for FF3 to propagate (Bout is already there from prev state , hence time is 0)
= Time to generate Aout + Time for logic 1 + time for AND gate + time for AND gate + time for FF3 to propagate
= 0 + 0 + 10 + 10 + 10 (like Bout , Aout is already there from previous state)
= 30ns
So time taken for FF1 , FF2 and FF3 to change their respective states are 10 , 20 and 30 ns . We take the maximum time among it i.e 30 ns as it will ensure that no FF is left out.