// Definiera ett eget filter

import java.io.*;

public class ToLowerCaseReader extends FilterReader {
    public ToLowerCaseReader(Reader r) {
	super (r);
    }
    
    private int convert(int i) {
	if (i == -1) return -1;
	if (i == ' ') return '*';
	if (i == '?') return '!';
	if (i == '!') return '?';
	else 
	    return Character.toLowerCase((char) i);
    }

    public int read () throws IOException {
	int c = in.read();
        return convert(c);
    }

    public int read (char[] cbuf, int off, int len) throws IOException {

	int n = in.read(cbuf, off, len);
	for (int i = off; i<off+n; i++) {
	    char c = (char)convert(cbuf[i]); 
            // (int)cbuf[i] is always a non-negative integer

	    cbuf[i] = c;
	}
	return n;
    }
}

