归纳法,不需要递归,效率最高

#include <stdio.h>

int main(int argc, char *argv[])
{
    int n;

    while (scanf("%d", &n) != EOF) {
        if (1 == n || 2 == n) {
            printf("-1\n");
        } else if (1 == n % 2) {
            printf("2\n");
        } else if (0 == n % 4) {
            printf("3\n");
        } else {
            printf("4\n");
        }
    }

    return 0;
}