distance(Xs,[],N) :- size(Xs,N), !.
distance([],Ys,N) :- size(Ys,N), !.
distance([X|Xs],[Y|Ys],N) :- X = Y, !, distance(Xs,Ys,N).
distance([X|Xs],[Y|Ys],N) :- X \= Y, !, distance(Xs,Ys,D1), distance([X|Xs],Ys,D2), distance(Xs,[Y|Ys],D3), min(D1,D2,D3,N1), N is N1+1.
size([],0) :- !.
size([X|Xs],N) :- size(Xs,N1), N is N1+1, !.
min(X,Y,Z,X) :- X =< Y, X =< Z, !.
min(X,Y,Z,Y) :- Y =< Z, !.
min(X,Y,Z,Z) :- !.
