Row, Column, Diagonal, Block

CJam, 13 12 unique characters, N = 5

"row"
cd;"a
oaiaa
l"aa;
"blk"

As straight forward as it gets

UPDATE : Converted space to a (no-op in this case) as pointed out by Runner112

Try it online here


Bash, 19 unique characters, N = 19

trap echo\ row exit
t=t trap exit      
t=t echo blk       
exit               
=                  
t    e             
      c            
e      h           
c       o          
h                  
o         d        
           i       
c           a      
o                  
l                  
                   
                   
                   
                   
  • The first row is trap echo\ row exit. This causes echo row to be executed when the script exits (just the first line)
  • The first column is ttt=t echo col
  • The diagonal is t=tt echo dia
  • The full block works by canceling the EXIT handler set up in the first line, then echo blk then exits.

><>, 14 unique characters, N = 10

"wor"\ooo;
     "    
l a  k    
o  i l    
c   db    
"    "    
o    oo   
o    o o  
o    o  o 
;    ;   ;

Pretty straightforward in a 2D language. The only tricky part is that we need the \ to distinguish between row and blk.