Single Rules + Single Arities on Each Side {{n1,a1}}{{n2,a2}}

Arity assumed the same on both sides; n2 > n1 for growth
allsigs=Flatten[Table[{{n1,a}}{{n2,a}},{n1,3},{n2,n1+1,6},{a,3}]]
In[]:=
Out[]=
Maximum number of symbols:
(Times@@First[#1]+Times@@First[#2])&@@@allsigs
In[]:=
{3,6,9,4,8,12,5,10,15,6,12,18,7,14,21,5,10,15,6,12,18,7,14,21,8,16,24,7,14,21,8,16,24,9,18,27}
Out[]=
SortBy[allsigs,((Times@@First[#1]+Times@@First[#2])&@@#)&]
In[]:=
Out[]=
SortBy[{#,((Times@@First[#1]+Times@@First[#2])&@@#)}&/@allsigs,Last]
In[]:=
Out[]=

1,1 -> 2,1

EnumerateWolframModelRules[{{1,1}}{{2,1}},2]
In[]:=
{{{1}}{{1},{1}},{{1}}{{1},{2}},{{1}}{{2},{2}},{{1}}{{2},{3}}}
Out[]=
Select[%,BiConnectedRuleQ]
In[]:=
{{{1}}{{1},{1}},{{1}}{{2},{2}}}
Out[]=
WolframModelTest[#,Automatic]&/@%154
In[]:=
Out[]=
MakePictures[%]
In[]:=
Out[]=
EnumerateWolframModelRules[{{1,1}}{{2,1}},3]
In[]:=
{{{1}}{{1},{1}},{{1}}{{1},{2}},{{1}}{{2},{2}},{{1}}{{2},{3}}}
Out[]=

1,1 -> 3,1

EchoFunction[Length]@Select[EnumerateWolframModelRules[{{1,1}}{{3,1}},4],BiConnectedRuleQ];
In[]:=
2
»
WolframModelTest[#,Automatic]&/@%;
In[]:=
Length/@GroupBy[%,#FinalState&]//Values
In[]:=
{10,1,1,15,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}
Out[]=
MakePictures[First/@Values[GroupBy[%,#FinalState&]]]
In[]:=
Out[]=

1,1 -> 4,1

EchoFunction[Length]@Select[EnumerateWolframModelRules[{{1,1}}{{4,1}},5],BiConnectedRuleQ];
In[]:=
2
»
WolframModelTest[#,Automatic]&/@%;
In[]:=
Length/@GroupBy[%,#FinalState&]//Values
In[]:=
{1,1}
Out[]=
MakePictures[First/@Values[GroupBy[%%,#FinalState&]]]
In[]:=
Out[]=

2,1 -> 3,1

EchoFunction[Length]@Select[EnumerateWolframModelRules[{{2,1}}{{3,1}},5],BiConnectedRuleQ];
In[]:=
2
»
WolframModelTest[#,Automatic]&/@%;
In[]:=
Length/@GroupBy[%,#FinalState&]//Values
In[]:=
{1,1}
Out[]=
MakePictures[First/@Values[GroupBy[%%,#FinalState&]]]
In[]:=
Out[]=

1,1 -> 5,1

1,2 -> 2,2

EnumerateWolframModelRules[{{1,2}}{{2,2}},2]
In[]:=
Out[]=
Select[%,BiConnectedRuleQ]
In[]:=
Out[]=
WolframModelTest[#,Automatic]&/@%;
In[]:=
Length/@GroupBy[%162,#FinalState&]//Values
In[]:=
{10,1,1,3,1,1,1}
Out[]=
MakePictures[First/@Values[GroupBy[%162,#FinalState&]]]
In[]:=
Out[]=
EchoFunction[Length]@Select[EnumerateWolframModelRules[{{1,2}}{{2,2}},3],BiConnectedRuleQ];
In[]:=
56
»
WolframModelTest[#,Automatic]&/@%;
In[]:=
Length/@GroupBy[%,#FinalState&]//Values
In[]:=
{10,1,1,12,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}
Out[]=
MakePictures[First/@Values[GroupBy[%%,#FinalState&]]]
In[]:=
Out[]=
PrintCells@{{{{1,2}}{{1,2},{2,3}},{{0,0}},8},{{{1,2}}{{2,1},{2,3}},{{0,0}},7}};
In[]:=
{{{1,2}}{{1,2},{2,3}},{{0,0}},8}
{{{1,2}}{{2,1},{2,3}},{{0,0}},7}

s 4 etc.

EchoFunction[Length]@Select[EnumerateWolframModelRules[{{1,2}}{{2,2}},4],BiConnectedRuleQ];
In[]:=
77
»
EchoFunction[Length]@Select[EnumerateWolframModelRules[{{1,2}}{{2,2}},5],BiConnectedRuleQ];
In[]:=
80
»
EchoFunction[Length]@Select[EnumerateWolframModelRules[{{1,2}}{{2,2}},6],BiConnectedRuleQ];
In[]:=
80
»
EchoFunction[Length]@Select[EnumerateWolframModelRules[{{1,2}}{{2,2}},5],BiConnectedRuleQ];
In[]:=
80
»
WolframModelTest[#,Automatic]&/@%;
In[]:=
Length/@GroupBy[%,#FinalState&]//Values
In[]:=
{10,1,1,15,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}
Out[]=
MakePictures[First/@Values[GroupBy[%%,#FinalState&]]]
In[]:=
Out[]=

{{{1,2}}{{3,2}},8}

Note: only going up to 4 symbols, not 8:
EchoFunction[Length]@Select[EnumerateWolframModelRules[{{1,2}}{{3,2}},4],BiConnectedRuleQ];
In[]:=
397
»
WolframModelTest[#,Automatic]&/@%;
In[]:=
Length/@GroupBy[%,#FinalState&]//Values
In[]:=
Out[]=
MakePictures[First/@Values[GroupBy[%201,#FinalState&]]]
In[]:=
Out[]=
PrintCells@{{{{1,1}}{{1,1},{1,2},{2,2}},{{0,0}},7},{{{1,1}}{{1,2},{2,2},{2,2}},{{0,0}},7},{{{1,2}}{{1,1},{1,3},{3,2}},{{0,0}},4},{{{1,2}}{{1,1},{1,2},{3,1}},{{0,0}},4},{{{1,2}}{{1,1},{3,1},{3,2}},{{0,0}},5},{{{1,2}}{{1,2},{1,3},{2,3}},{{0,0}},4},{{{1,2}}{{1,2},{1,3},{3,3}},{{0,0}},5},{{{1,2}}{{1,2},{2,3},{2,3}},{{0,0}},5},{{{1,2}}{{1,2},{2,3},{3,1}},{{0,0}},4},{{{1,2}}{{1,2},{2,3},{4,1}},{{0,0}},4},{{{1,2}}{{1,2},{3,2},{3,3}},{{0,0}},5},{{{1,2}}{{1,3},{1,3},{2,3}},{{0,0}},4},{{{1,2}}{{1,3},{1,3},{3,2}},{{0,0}},5},{{{1,2}}{{1,3},{1,4},{3,2}},{{0,0}},5},{{{1,2}}{{1,3},{1,4},{2,3}},{{0,0}},4},{{{1,2}}{{1,3},{2,3},{3,3}},{{0,0}},5},{{{1,2}}{{1,3},{2,3},{3,4}},{{0,0}},5},{{{1,2}}{{1,3},{2,3},{3,4}},{{0,0}},5}};
In[]:=
{{{1,1}}{{1,1},{1,2},{2,2}},{{0,0}},7}
{{{1,1}}{{1,2},{2,2},{2,2}},{{0,0}},7}
{{{1,2}}{{1,1},{1,3},{3,2}},{{0,0}},4}
{{{1,2}}{{1,1},{1,2},{3,1}},{{0,0}},4}
{{{1,2}}{{1,1},{3,1},{3,2}},{{0,0}},5}
{{{1,2}}{{1,2},{1,3},{2,3}},{{0,0}},4}
{{{1,2}}{{1,2},{1,3},{3,3}},{{0,0}},5}
{{{1,2}}{{1,2},{2,3},{2,3}},{{0,0}},5}
{{{1,2}}{{1,2},{2,3},{3,1}},{{0,0}},4}
{{{1,2}}{{1,2},{2,3},{4,1}},{{0,0}},4}
{{{1,2}}{{1,2},{3,2},{3,3}},{{0,0}},5}
{{{1,2}}{{1,3},{1,3},{2,3}},{{0,0}},4}
{{{1,2}}{{1,3},{1,3},{3,2}},{{0,0}},5}
{{{1,2}}{{1,3},{1,4},{3,2}},{{0,0}},5}
{{{1,2}}{{1,3},{1,4},{2,3}},{{0,0}},4}
{{{1,2}}{{1,3},{2,3},{3,3}},{{0,0}},5}
{{{1,2}}{{1,3},{2,3},{3,4}},{{0,0}},5}
{{{1,2}}{{1,3},{2,3},{3,4}},{{0,0}},5}