Some discussion has already been made in the other sections regarding how long each line of BASIC depending on if it's a PUR-80, PUR-120 or EXTREM-256 and while I was interpreting the Rules as count the number of keypresses, it's open to interpretation because BASIC tokenises Keywords, so classic commands like PRINT which contain 5 Characters, is tokenised to a Single Byte (or Character).
However, I recently discovered while coding with Locomotive BASIC on my Amstrad CPC, a character line could be more than the number of characters typed when I made a small routine which obtains the values that Locomotive BASIC stores before the beginning of each line:
60000 a=&170
60010 v=PEEK(&170)
60020 n=0
60030 FOR l=1 TO 10
60040 PRINT v
60050 n = a + v
60060 a = n
60070 v = PEEK(n)
60080 CALL &BB18
60090 NEXT l
In Locomotive BASIC programs begin at &170 and this is where the 1st Line Length is stored into the 'v' variable, the 'n' variable is used to add the existing address (&170) with the length stored in 'v' and this then points to the address of the Line Length for the 2nd line and so on. CALL &BB18 towards the end of the code is the Amstrads way of Wait for Keypress, it's not really necessary here has the code only displays 10 Lines and their lengths, but kept in it so it doesn't throw off 10 Lines at Once as I'm not printing the Line Numbers.
I feel somewhat foolish I started this discussion because I felt people were asking if they were meant to be counting the Tokens per line or the number keypresses. The code I posted above actually showed that if you had Locomotive BASIC, then a Line Length could actually be longer than the number of characters pressed, though it could also be shorter if a lot of Tokenised Command/Fuction statements were used (which is what Locomotive BASIC does).
I'm familiar with the abbreviated tricks Atari BASIC used which came from the early Tiny BASIC (possibly Palo Alto) due to the short amount of memory (~4kb) Microcomputers had in the mid 70s, the TRS BASIC also adopted that approach despite being Microsoft, when the Amstrad came along in 1984, machines had 64k and could simply had any Command or Function represented as a Byte. Things like PRINT can still be represented as a '?', apart from that it's Control Codes and using the Copy Cursor to insert Characters into a String instead of using CHR$() to abreviate.