# 288 characters (excluding trailing \n)
sub l{length$_[0]};sub p{$x=int rand($n=10**$d);$y=int rand($n);$z=$x+$y;@a=();for(0..9){while(defined $a[$n=rand(10)]){};$a[$n]=chr(65+$_);}$n=2+l$z;$"='';print map{eval"y/0-9/@a/";$_}(' 'x($n- l$x),"$x
+ ",' 'x($n-2- l$y),"$y
",'-'x$n,"
$z
");}$d=shift||4;$q=shift||1;p$d for(1..$q);
####
BGBHD
+ ACGIJ
--------
EHJECB
JAECD
+ BFIEF
--------
CAGCGF
GJBEJ
+ HGJIF
-------
IBFCA
BJAGH
+ DCBFB
--------
BFACGI
####
#Sum looks like this:
ABC
+ DDDD
-------
AEABB