#include <stdio.h>
#include <string.h>

float sqr(float x){
  return x*x;
}

int main(){
  int i, c, Anzahl[256], Summe1 = 0, Summe2, Summe3 = 0, Summe4 = 0;
  float kappa1 = 0.0, kappa2 = 0.0, kappa3 = 0.0, kappa4 = 0.0;
  char * Klasse3 = "δφόΔΦάί!\"()?;:,. ";

  for (i=0; i<256; i++){
     Anzahl[i] = 0;
  }

  while ( (c = getchar()) != EOF ){
     Anzahl[c]++;
  }

for (i=0; i<26; i++){
   Summe1 += Anzahl[i + 'a'] + Anzahl[i + 'A'];
   }

for (i=0; i<26; i++){
/* printf("%c %c  %6.4f\n", (char) i + 'a', (char) i + 'A',
           (float) (Anzahl[i + 'a'] + Anzahl[i + 'A'])/Summe1); */
   kappa1 += sqr( (float) (Anzahl[i + 'a'] + Anzahl[i + 'A'])/Summe1 );
}

printf("%10d   %8.5f     %8.5f     %8.5f\n", Summe1, kappa1, 1.0/26, kappa1*26);


Summe2 = Summe1 + Anzahl[' '];
for (i=0; i<26; i++){
   kappa2 += sqr( (float) (Anzahl[i + 'a'] + Anzahl[i + 'A'])/Summe2 );
}
kappa2 += sqr( (float) Anzahl[' ']/Summe2 );

printf("%10d   %8.5f     %8.5f     %8.5f\n", Summe2, kappa2, 1.0/27, kappa2*27);

for (i=0; i<256; i++){
   if ( isalpha(i) ||  (strchr(Klasse3, i) != NULL) ) Summe3 += Anzahl[i];

   }

for (i=0; i<256; i++){
   if ( isalpha(i) ||  (strchr(Klasse3, i) != NULL) )
   kappa3 += sqr(( (float) Anzahl[i] )/Summe3);
   }

printf("%10d   %8.5f     %8.5f     %8.5f\n", Summe3, kappa3,
       1.0/(52+strlen(Klasse3)), kappa3*(52+strlen(Klasse3)));


Summe3 = Summe3 + 10; kappa3 = 0;
for (i=0; i<256; i++){
   if ( isalnum(i) ||  (strchr(Klasse3, i) != NULL) )
   kappa3 += sqr(( (float) Anzahl[i] )/Summe3);
   }

printf("%10d   %8.5f     %8.5f     %8.5f\n", Summe3, kappa3,
       1.0/(62+strlen(Klasse3)), kappa3*(62+strlen(Klasse3)));


for (i=0; i<256; i++){
   Summe4 += Anzahl[i];
   }

for (i=0; i<256; i++){
   kappa4 += sqr(( (float) Anzahl[i] )/Summe4);
   }

printf("%10d   %8.5f     %8.5f     %8.5f\n", Summe4, kappa4, 1.0/256, kappa4*256);

}
