         ,
    8 x 8    
- 16 ,    .
   ?

      ( ),
     ( 16  64)
     . 
        .

 :    16  2 x 2,
        .
           .
           .
       
    0  4 : 
  /    /.
   5^8 ( 400000) ,
        
(   ).   ,
        .

 :  .
 55    
(  )    1 x 8 (. ).
 cnt(k)     ( 0  4)  k- .
       
(..         ).
 :
dyn[0..8][0..16][1..55]: array of integers;
dyn[i][j][k] =   ,       j 
    8   i  ,     
         ( ) k-  55- .
:
  dyn[0][0][k] = 1   k = 1..55; 
  dyn[0][j][k] = 0   k = 1..55   j = 1..16.
 :
  dyn[i][j][k] = sum dyn[i-1][j-cnt(k')][k'],
     k'  1  55,   k  ,  cnt(k') >= j.
     . 
return dyn[8][16][1],  1      55- 
(      /   ).

 :    .
 55-      (.  )
   .     :
---     ,    ,
            .
---     ,    ,
            
          .
 A      ,     ;
 B      ,     .
            7,
  , ,        ,
      .  7    
(      ,      ..).
             
     ,
,       
        BABABAB = ((BA)^3)B.

       (. ZIP ).
     16    8 x 8  281571.
