If the sender sends a line-ending character there are two characters in the buffer
hence two times printing and the second printing is just the line feed or carriage return which is unvisible
I can clearly see a 'T' between the first ':' and the '0'
And a NEWLINE between the second ':' and the '0'
I could even explain why the third Serial.available() returns (and prints) 0.
The question is rather, how many loops did run idle, until the NEWLINE arrived and triggered the second output.
If messages/commands consist of more than one character, it's often convenient to separate them by delimiters.
A newline character is quite common for this purpose.
Sometimes you even want to ignore trailing spaces, which are really hard to see.
And you should be aware of different line separator characters, stemming from Stone Age Teletypes
0x0D = carriage return
0x0A = line feed
(See the options in SerialMonitor)