Homework 3 Assigned 20 Oct; due 8 Nov. Write a C program named "cipher" to implement a substitution cipher, replacing certain letters of the alphabet (and possibly numbers, punctuation markers, etc.) by other letters (numbers, etc.) The program has one required parameter and two possible options "-e" ("encode") and "-d" ("decode"); only one of these two may appear, and if it does, it must appear before the parameter. The parameter is the name of a text file containing exactly two lines of the same length. (If it doesn't contain exactly two lines, or if they aren't the same length, your program may print an error message or whatever you like.) These two lines represent the substitution cipher: a character on the top line will be replaced by the character directly beneath it on the bottom line. After reading in this file, the program will act as a filter: for each character it reads from stdin, it will find that character in the top line and output the corresponding character in the bottom line. If a character appears twice on the top line, you may use whichever one you wish; if it doesn't appear at all on the top line, output it without changing anything. For example, if there were a file named "Caesar" containing the two lines ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz DEFGHIJKLMNOPQRSTUVWXYZABCdefghijklmnopqrstuvwxyzabc and I typed "cipher Caesar", the program would read from stdin: whenever it read an A, it would output a D; whenever it read a B, it would output an E, and so on; whenever it read a z, it would output a c. Similarly, if I had a file named "upcase" containing the two lines abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ the program "cipher upcase" would effectively translate every lower-case letter it read into a capital (upper-case) letter.