using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;

static class HitAndBlow
{
    static void Main()
    {
        var input = new StreamReader( Console.OpenStandardInput() ).ReadToEnd()
            .Where( x => '0' <= x && x <= '9' )
            .GroupSpan( 3 )
            .Select( x => x.GroupSpan( 2 ) )
            .Select( x => x.Select( y => y.ToArray() ) )
            .Select( x => x.ToArray() );
        var q =
            from x in input
            let nohit = Enumerable.Range( 0, 4 )
                .Where( y => x[0][y] != x[1][y] )
                .Select( y => new { a = x[0][y], b = x[1][y] } )
                .ToArray()

            let h = 4 - nohit.Length
            let b = nohit.Select( y => y.b )
                .Count( y => nohit.Select( z => z.a ).Contains( y ) )
            select h + " " + b;
        q.ToList().ForEach( Console.WriteLine );
    }

    static IEnumerable<IEnumerable<TSource>>
    GroupSpan<TSource>
    (this IEnumerable<TSource> source, int span)
    {
        return source
            .Select( (v, i) => new { v, k = i >> span } )
            .GroupBy( x => x.k, x => x.v ) as IEnumerable<TSource>;
    }
}