import java.*;
import java.io.*;
import java.util.Calendar;
import java.util.*;



/**
 *
 * @author cteam43
 */
public class bus {
    
    static int c = 0;
    static int[] okDays;
    static Calendar[] holidays = new Calendar[12];
    static boolean a, w, t;

    static void init(int year) {
        okDays = new int[10];
        
        a = w = t = false;
        
        holidays[0] = new GregorianCalendar(year, 0, 1);
        holidays[1] = getEasterMonday(year);
        holidays[2] = new GregorianCalendar(year, 4, 1);
        holidays[3] = new GregorianCalendar(year, 4, 8);
        holidays[4] = new GregorianCalendar(year, 5, 5);
        holidays[5] = new GregorianCalendar(year, 5, 6);
        holidays[6] = new GregorianCalendar(year, 8, 28);
        holidays[7] = new GregorianCalendar(year, 9, 28);
        holidays[8] = new GregorianCalendar(year, 10, 17);
        holidays[9] = new GregorianCalendar(year, 11, 24);
        holidays[10] = new GregorianCalendar(year, 11, 25);
        holidays[11] = new GregorianCalendar(year, 11, 26);
    }
    
    private static Calendar getEasterMonday(int y){
        int golden, solar, lunar, p;
        golden= (y % 19) + 1;
        solar = (y - 1600) / 100 - (y - 1600) / 400;
        lunar = (((y - 1400) / 100) * 8) / 25;
        p = (3003 - (11 * golden) + solar - lunar) % 30;
        if(p == 29 || (p == 28 && golden > 11)) p--;
        
        Calendar cal = new GregorianCalendar(y, Calendar.MARCH, 21);
        cal.add(Calendar.DAY_OF_MONTH, p);
        
        while(true) {
            if(cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) break;
            cal.add(Calendar.DAY_OF_MONTH, 1);
        }
        cal.add(Calendar.DAY_OF_MONTH, 1);
       
        return cal;
    }
    
    public static Calendar[] parseInterval(String interval, int year) {
        String[] parts = interval.split("-");

        String start = parts[0];
        String end = start;
        if(parts.length == 2) end = parts[1];
         
        String[] nums = start.split("\\.");

        Calendar startCal = new GregorianCalendar(year, new Integer(nums[1]) - 1, new Integer(nums[0]));
        nums = end.split("\\.");
        Calendar endCal = new GregorianCalendar(year, new Integer(nums[1]) - 1, new Integer(nums[0]));
        
        return new Calendar[]{startCal, endCal};
    }
    
    static void parseAllowed(String s) {
        for(int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            switch(c){
                case 't':
                    t = true; break;
                case 'w':
                   w = true; break;
                case 'a':
                    a = true; break;
                default:
                    int x = c - '0';
                    if(x == 1) okDays[Calendar.MONDAY] = 1;
                     if(x == 2) okDays[Calendar.TUESDAY] = 1;
                     if(x == 3) okDays[Calendar.WEDNESDAY] = 1;
                     if(x == 4) okDays[Calendar.THURSDAY] = 1;
                     if(x == 5) okDays[Calendar.FRIDAY] = 1;
                     if(x == 6) okDays[Calendar.SATURDAY] = 1;
                     if(x == 7) okDays[Calendar.SUNDAY] = 1;
                    
                    
                
            }
        }
    }
    //3a 1.1.-30.6.,31.7.,1.9.-31.12. 2010
    static boolean isHol(Calendar cal) {
        for(int i=0; i < 12; i++) {
            if(holidays[i].equals(cal)) return true;
        }
        
        if(cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) return true;
      return false;
    }
    
    static boolean isValid(Calendar cal) {
        

     
        int weekday = cal.get(Calendar.DAY_OF_WEEK);
        if(okDays[weekday] == 1) return true;
        
        if(t) {
            if(isHol(cal)) return true;
        }
        
        if(w) {
            if(!isHol(cal) && (weekday == Calendar.MONDAY || weekday == Calendar.TUESDAY || 
                    weekday == Calendar.WEDNESDAY || weekday == Calendar.THURSDAY || 
                    weekday == Calendar.FRIDAY)) return true;
        }

        if(a){
            if((weekday == Calendar.MONDAY || weekday == Calendar.TUESDAY || 
                    weekday == Calendar.WEDNESDAY || weekday == Calendar.THURSDAY || 
                    weekday == Calendar.FRIDAY) && !isHol(cal)){
               
               cal.add(Calendar.DAY_OF_MONTH, -1);
               if(isHol(cal))  { cal.add(Calendar.DAY_OF_MONTH, 1);return true;}
                cal.add(Calendar.DAY_OF_MONTH, 1);
            }
        }
        
        return false;
    }
    
    public static void main(String[] args) {
        try{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String line = null;

        while((line = br.readLine()) != null) {
            int count = 0;
            String[] parts = line.split(" ");
            int year = new Integer(parts[2]);
            init(year);
            
            String[] intervals = parts[1].split(",");
            for(String interval: intervals) {
                Calendar[] cals = parseInterval(interval, new Integer(parts[2]));
                
                parseAllowed(parts[0]);
                
                Calendar cal = cals[0];
                while(true) {
                    if(isValid(cal))  count++;

                    
                    if(cal.equals(cals[1])) break;
                    cal.add(Calendar.DAY_OF_MONTH, 1);
                }
                
                 
            }
            
        System.out.println(count);
        }
        }catch(Exception e){
                e.printStackTrace();
        }
    }

}
