OverlapFreeQ[a_String,b_String]:=If[StringLength[a]>StringLength[b],OFQ2[b,a],OFQ2[a,b]]
OFQ2[a_,b_]:=StringPosition[b,a,1]=={}&&MatchQ[StringPosition[a,Table[StringTake[b,-i],{i,StringLength[a]}],1],{}|{{x_,_}}/;x>1]&&MatchQ[StringPosition[b,Table[StringTake[a,-i],{i,StringLength[a]}],1],{}|{{x_,_}}/;x>1]
nonover5=With[{l=Table[FromCharacterCode[Rest[IntegerDigits[i,2]]+65],{i,2,31}]},Select[Join@@Outer[List,l,l],OverlapFreeQ@@#&]]
{{A,B},{A,BB},{A,BBB},{A,BBBB},{B,A},{B,AA},{B,AAA},{B,AAAA},{AA,B},{AA,BB},{AA,BAB},{AA,BBB},{AA,BABB},{AA,BBAB},{AA,BBBB},{BB,A},{BB,AA},{BB,AAA},{BB,ABA},{BB,AAAA},{BB,AABA},{BB,ABAA},{AAA,B},{AAA,BB},{AAA,BAB},{AAA,BBB},{AAA,BAAB},{AAA,BABB},{AAA,BBAB},{AAA,BBBB},{ABA,BB},{ABA,BBB},{ABA,BBBB},{BAB,AA},{BAB,AAA},{BAB,AAAA},{BBB,A},{BBB,AA},{BBB,AAA},{BBB,ABA},{BBB,AAAA},{BBB,AABA},{BBB,ABAA},{BBB,ABBA},{AAAA,B},{AAAA,BB},{AAAA,BAB},{AAAA,BBB},{AAAA,BAAB},{AAAA,BABB},{AAAA,BBAB},{AAAA,BBBB},{AABA,BB},{AABA,BBB},{AABA,BBAB},{AABA,BBBB},{AABB,ABAB},{ABAA,BB},{ABAA,BBB},{ABAA,BABB},{ABAA,BBBB},{ABAB,AABB},{ABBA,BBB},{ABBA,BBBB},{BAAB,AAA},{BAAB,AAAA},{BABA,BBAA},{BABB,AA},{BABB,AAA},{BABB,AAAA},{BABB,ABAA},{BBAA,BABA},{BBAB,AA},{BBAB,AAA},{BBAB,AAAA},{BBAB,AABA},{BBBB,A},{BBBB,AA},{BBBB,AAA},{BBBB,ABA},{BBBB,AAAA},{BBBB,AABA},{BBBB,ABAA},{BBBB,ABBA}}