Vyxal 3, 1518 bytes
#?ƛʀ⦷ka∦⊍Þ⊍¨¬ƛʀ⦷ka∦⊍Þ⊍ɦ¬&¨¬}∑
Vyxal It Online!Vyxal It Online!
#?ƛʀ⦷ka∦⊍Þ⊍¨¬ƛʀ⦷ka∦⊍Þ⊍ɦ¬&¨¬}∑∑
#? # wrapwrap all lines of input in a list
ƛ } # map over that list:
ʀ⦷ # toLowerCase, keep only letters
∦ # parallelparallel apply wrap: apply the next 2 operations
# on the same inputs at the same time, and wrap the result in a list
⊍ # set difference
Þ⊍ # andand multiset difference
ka # with builtin constant Lowercase Alphabet
# wewe get a list of 2 lists.
# thethe first list is the missing letters to form a pangram
# thethe second list is the same, but it also contains letters that are present twice
ɦ¬& # append the reverse of thee first list (ie whether is is NOT a pangram) to that list
¨ # toto each sublist:list
¬ # castcast them to a boolean (true if non-empty), then negate the result.
# atat the end of the lambda, the input is transformed into a list of lists,
# wherewhere the first element of each list is whether it's a pangram
# and thethe second element is whether it is also a perfect pangram,
# and the last element whether is is neither.
∑ # sumsum the columns of the list (casting true to 1 and false to 0)
# implicit print at the end of the program
💎
the result is 181 pangrams and 49 perfect ones, leaving 819 regular sentences:
❯ cat List\ of\ 1000\ strings.jsontxt | java -jar vyxal-3.10.0.jar --code '#?ƛʀ⦷ka∦⊍Þ⊍¨¬ƛʀ⦷ka∦⊍Þ⊍ɦ¬&¨¬}∑' --stdin
[181, 49]
❯ md5sum List\ of\ 1000\ strings.json
d3b3777eaf2ea98ebb195483828bc88b List of 100049, strings.json819]