// Arup Guha
// 8/15/2019
// Solution for 2018 AP FR Question #3: CodeWordChecker

import java.util.*;

public class CodeWordChecker implements StringChecker {

	// Pretty clear that these are the instance variables.
	private int minLen;
	private int maxLen;
	private String illegal;
	
	// Using their defaults.
	public CodeWordChecker(String bad) {
		minLen = 6;
		maxLen = 20;
		illegal = bad;
	}	
	
	// Just assign stuff here.
	public CodeWordChecker(int min, int max, String bad) {
		minLen = min;
		maxLen = max;
		illegal = bad;
	}
	
	public boolean isValid(String test) {
		
		// First check lengths on both sides.
		if (test.length() < minLen || test.length() > maxLen) return false;
		
		// Then, see if illegal is in test or not...
		return !test.contains(illegal);
	}
	
	public static void main(String[] args) {
		StringChecker sc1 = new CodeWordChecker(5, 8, "$");
		StringChecker sc2 = new CodeWordChecker("pass");
		System.out.println(sc1.isValid("happy"));
		System.out.println(sc1.isValid("happy$"));
		System.out.println(sc1.isValid("Code"));
		System.out.println(sc1.isValid("happyCode"));
		System.out.println(sc1.isValid("12345678"));
		System.out.println(sc2.isValid("MyPass"));
		System.out.println(sc2.isValid("Mypassport"));
		System.out.println(sc2.isValid("happy"));
		System.out.println(sc2.isValid("1,000,000,000,000,000"));
		System.out.println(sc2.isValid("thisisnottoolongnope"));
	}
	
	
}