process.stdin.resume();
process.stdin.setEncoding('utf8');
 
var iters = 1000000;
var withRegex = function( string ) {
  return string.replace( /[^a-z0-9]/ig, '' );
};
var withRegex2 = function( string ) {
  return string.replace( /[^a-z0-9]+/ig, '' );
};
var withPureJS = function( string ) {
  var result = "";
  var length = string.length;
  for ( var pos = 0; pos < length; pos++ ) {
    c = string.charCodeAt( pos );
    if ( ( c > 47 && c < 58 ) || ( c > 64 && c < 91 ) || ( c > 96 && c < 123 ) ) {
      result += string[pos];
    };
  };
  return result;
};
 
function test( func, string, iters ) {
  var tStart = Date.now();
  var etalon = withRegex( string );
  for ( var i=0; i<iters; i++ ) {
      if ( func( string ) != etalon ) {
        console.log( "error" );
        break;
      };
  };
  var tEnd = Date.now();
  console.log( "test "+counter, tEnd - tStart );
  counter++;
};
 
console.log( "Test started" );
var counter = 1;
test( withRegex, "abc0123$%^&*", iters );
test( withRegex2, "abc0123$%^&*", iters );
test( withPureJS, "abc0123$%^&*", iters );
				cHJvY2Vzcy5zdGRpbi5yZXN1bWUoKTsKcHJvY2Vzcy5zdGRpbi5zZXRFbmNvZGluZygndXRmOCcpOwoKdmFyIGl0ZXJzID0gMTAwMDAwMDsKdmFyIHdpdGhSZWdleCA9IGZ1bmN0aW9uKCBzdHJpbmcgKSB7CiAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKCAvW15hLXowLTldL2lnLCAnJyApOwp9Owp2YXIgd2l0aFJlZ2V4MiA9IGZ1bmN0aW9uKCBzdHJpbmcgKSB7CiAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKCAvW15hLXowLTldKy9pZywgJycgKTsKfTsKdmFyIHdpdGhQdXJlSlMgPSBmdW5jdGlvbiggc3RyaW5nICkgewogIHZhciByZXN1bHQgPSAiIjsKICB2YXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDsKICBmb3IgKCB2YXIgcG9zID0gMDsgcG9zIDwgbGVuZ3RoOyBwb3MrKyApIHsKICAgIGMgPSBzdHJpbmcuY2hhckNvZGVBdCggcG9zICk7CiAgICBpZiAoICggYyA+IDQ3ICYmIGMgPCA1OCApIHx8ICggYyA+IDY0ICYmIGMgPCA5MSApIHx8ICggYyA+IDk2ICYmIGMgPCAxMjMgKSApIHsKICAgICAgcmVzdWx0ICs9IHN0cmluZ1twb3NdOwogICAgfTsKICB9OwogIHJldHVybiByZXN1bHQ7Cn07CgpmdW5jdGlvbiB0ZXN0KCBmdW5jLCBzdHJpbmcsIGl0ZXJzICkgewogIHZhciB0U3RhcnQgPSBEYXRlLm5vdygpOwogIHZhciBldGFsb24gPSB3aXRoUmVnZXgoIHN0cmluZyApOwogIGZvciAoIHZhciBpPTA7IGk8aXRlcnM7IGkrKyApIHsKICAgICAgaWYgKCBmdW5jKCBzdHJpbmcgKSAhPSBldGFsb24gKSB7CiAgICAgICAgY29uc29sZS5sb2coICJlcnJvciIgKTsKICAgICAgICBicmVhazsKICAgICAgfTsKICB9OwogIHZhciB0RW5kID0gRGF0ZS5ub3coKTsKICBjb25zb2xlLmxvZyggInRlc3QgIitjb3VudGVyLCB0RW5kIC0gdFN0YXJ0ICk7CiAgY291bnRlcisrOwp9OwoKY29uc29sZS5sb2coICJUZXN0IHN0YXJ0ZWQiICk7CnZhciBjb3VudGVyID0gMTsKdGVzdCggd2l0aFJlZ2V4LCAiYWJjMDEyMyQlXiYqIiwgaXRlcnMgKTsKdGVzdCggd2l0aFJlZ2V4MiwgImFiYzAxMjMkJV4mKiIsIGl0ZXJzICk7CnRlc3QoIHdpdGhQdXJlSlMsICJhYmMwMTIzJCVeJioiLCBpdGVycyApOw==