is_delta(N,_):-N<0,!,fail. is_delta(0,_):-!. is_delta(N,D):- N1 is N-D, D1 is D+1, is_delta(N1,D1). score([],Score,Score):-!. score([X|Xs],Score,Result):- Score1 is X-64+Score, score(Xs,Score1,Result). count(Words,1):- member(E,Words), score(E,0,S), is_delta(S,1). myread(FN):- open(FN,read,IS), read_term(IS,Words,[]), close(IS), findall(E,count(Words,E),Es), length(Es,Ans), write(Ans). main:-myread('pe42.txt').