#include <stdio.h>
#include <string.h>

typedef struct
{
    char cmd[21];
    char execute[21];
}cmd_execute;

int main()
{
    int index = -1;
    char cmd_str[21] = {0};
    cmd_execute cmd_lib[6] = {
            "reset", "reset what",
            "reset board", "board fault",
            "board add", "where to add",
            "board delete", "no board at all",
            "reboot backplane", "impossible",
            "backplane abort", "install first"
    };
    
    /* 标记命令库 每个位置是否被匹配 */
    int size[6] = {0, 0, 0, 0, 0, 0};
    
    while(gets(cmd_str) != NULL)
    {
        char *split = strtok(cmd_str, " ");
        char* split1 = strtok(NULL, " ");
        int flag = 0;
        int index = 0;
        
        memset(size, 0 , sizeof(int) * 6);
        
        if(split != NULL)
        {
            
            int len = strlen(split);
            int i;
            for(i = 0; i < 6; i++)
            {
                flag = 1;
                char* cmd_lib_split_1 = NULL;
                char* cmd_lib_split_2 = NULL;
                char tmp[21] = {0};
                memcpy(tmp, cmd_lib[i].cmd, strlen(cmd_lib[i].cmd));
                
                cmd_lib_split_1 = strtok(tmp, " ");
                cmd_lib_split_2 = strtok(NULL, " ");
                
                /* 第一关键字长度不匹配 命令不匹配*/
                if(strlen(cmd_lib_split_1) < len)
                {
                    flag = 0;
                    continue;
                }
                
                for(int j = 0; j < strlen(split); j++)
                {
                    if(cmd_lib_split_1[j] != split[j])
                    {
                        flag = 0;
                        break;
                    }
                }
//                 printf("cmd_lib_split_1 = %s, split = %s \n", cmd_lib_split_1, split);
//                 printf("cmd_lib_split_2 = %s, split1 = %s \n", cmd_lib_split_2, split1);
                
                /* 命令字符 不对应,错误 */
                if(!flag)
                {
                    continue;
                }
                else    
                {
                    if((cmd_lib_split_2 == NULL && split1 != NULL)
                      || (cmd_lib_split_2 != NULL && split1 == NULL) )        /* 第二关键字不匹配 */
                    { 
                        continue;
                    }
                    else if((cmd_lib_split_2 == NULL && split1 == NULL))    /* 无第二关键字,此命令匹配成功,标记 */
                    {
                        size[i]++;
                        continue;
                    }
                }
                
                /* 第二关键字 字符长度不匹配 */
                if(strlen(cmd_lib_split_2) < strlen(split1))
                {
                    flag = 0;
                    continue;
                }
                
                for(int j = 0; j < strlen(split1); j++)
                {
                    if(cmd_lib_split_2[j] != split1[j])
                    {
                        flag = 0;
                        continue;
                    }
                }
                
                /* 所有关键字均匹配 ,标记 */
                if(flag)
                {
                    size[i]++;
                    continue;
                }
                
            }
            
            int num = 0;
            
            /* 查询,匹配命令的个数 */
            for(int i = 0; i < 6; i++)
            {
                if(size[i] == 1)
                {
                    num++;
                    index = i;
                }
            }
            
            /* 仅匹配成功一条命令的 输出 */
            if(num == 1)
            {
                printf("%s\n", cmd_lib[index].execute);
                
            }
            else
            {
                printf("unknown command\n");
            }
                     
        }
        
        memset(cmd_str, 0, sizeof(char) * 20);
    }
    return 0;
}