import java.util.HashMap ;
import java.util.Scanner ;
import java.util.stream.Collectors ;
import java.util.stream.IntStream ;
public class Main{
static final Scanner s
= new Scanner
( System .
in ) ; static IntStream REPS( int v) { return IntStream.range ( 0 ,v) ; }
static IntStream REPS( int l,int r) { return IntStream.rangeClosed ( l,r) ; }
static IntStream INS( int n) { return REPS( n) .map ( i-> getInt( ) ) ; }
static int getInt
( ) { return Integer .
parseInt ( s.
next ( ) ) ; }
public static void main
( String [ ] $
) { HashMap
< Integer ,Integer
> m
= new HashMap
<> ( 26 ) ; REPS( 'a' ,'z' ) .forEach ( i-> m.put ( i,0 ) ) ;
s.next ( ) ;
s.
next ( ) .
chars ( ) .
forEach ( i
-> m.
merge ( i,
1 ,
Integer :: sum
) ) ; System .
out .
println ( m.
values ( ) .
stream ( ) .
map ( String :: valueOf
) .
collect ( Collectors.
joining ( " " ) ) ) ;; }
}
aW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwppbXBvcnQgamF2YS51dGlsLlNjYW5uZXI7CmltcG9ydCBqYXZhLnV0aWwuc3RyZWFtLkNvbGxlY3RvcnM7CmltcG9ydCBqYXZhLnV0aWwuc3RyZWFtLkludFN0cmVhbTsKCnB1YmxpYyBjbGFzcyBNYWluewoJc3RhdGljIGZpbmFsIFNjYW5uZXIgcz1uZXcgU2Nhbm5lcihTeXN0ZW0uaW4pOwoJc3RhdGljIEludFN0cmVhbSBSRVBTKGludCB2KXtyZXR1cm4gSW50U3RyZWFtLnJhbmdlKDAsdik7fQoJc3RhdGljIEludFN0cmVhbSBSRVBTKGludCBsLGludCByKXtyZXR1cm4gSW50U3RyZWFtLnJhbmdlQ2xvc2VkKGwscik7fQoJc3RhdGljIEludFN0cmVhbSBJTlMoaW50IG4pe3JldHVybiBSRVBTKG4pLm1hcChpLT5nZXRJbnQoKSk7fQoJc3RhdGljIGludCBnZXRJbnQoKXtyZXR1cm4gSW50ZWdlci5wYXJzZUludChzLm5leHQoKSk7fQoKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdJCl7CgkJSGFzaE1hcDxJbnRlZ2VyLEludGVnZXI+bT1uZXcgSGFzaE1hcDw+KDI2KTsKCQlSRVBTKCdhJywneicpLmZvckVhY2goaS0+bS5wdXQoaSwwKSk7CgkJcy5uZXh0KCk7CgkJcy5uZXh0KCkuY2hhcnMoKS5mb3JFYWNoKGktPm0ubWVyZ2UoaSwxLEludGVnZXI6OnN1bSkpOwoJCVN5c3RlbS5vdXQucHJpbnRsbihtLnZhbHVlcygpLnN0cmVhbSgpLm1hcChTdHJpbmc6OnZhbHVlT2YpLmNvbGxlY3QoQ29sbGVjdG9ycy5qb2luaW5nKCIgIikpKTs7Cgl9Cn0KICAgICA=